@opcua/for-node-red 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all.js +1 -1
- package/package.json +1 -1
- package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.html +2 -2
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.html +2 -2
- package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.html +2 -2
- package/source/OpcUa-Client2-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 +2 -2
@@ -4,8 +4,8 @@
|
|
4
4
|
</style>
|
5
5
|
|
6
6
|
<script type="text/javascript">
|
7
|
-
function _0x1a24(_0x21116b,_0x196443){const _0x3b6c55=_0x3b6c();return _0x1a24=function(_0x1a247a,_0x3c2304){_0x1a247a=_0x1a247a-0x68;let _0x103b09=_0x3b6c55[_0x1a247a];return _0x103b09;},_0x1a24(_0x21116b,_0x196443);}function _0x3b6c(){const _0x34270c=['requestedNodeId','$selectLabel','sterfive.nodeBrowser','stopPropagation','top','isTypeRef','/checkNodeId','blur','elements','node\x20class:\x20','prev','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','inputs','after','closest','body','</li>','OpcUa-Client2-ExtensionObject','nodeClass','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','selectedMenuItem','.tree-text:first','\x22\x20style=\x22color:','localeCompare','.spinner','placeholder','sterfive-typedInput-options\x20sterfive-online-menu','nodeId:\x20','</span><ul></ul></li>','NodeId\x20with\x20namespace\x20Urn','log','trigger','<div/>','match','ns=0;i=35','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','err','length','resolveParentNode','offset','$uiSelect','$combo','input[type=\x22checkbox\x22]','already\x20loading','ReferenceType','li\x20>\x20.tree-text','aliasedNodeId','mousedown.red-ui-typedInput-close-property-select','opts','wrap','_delay','target','referenceTypeId','NodeClass','each','<a\x20href=\x22#\x22></a>','prop','height','node','#node-input-dataType','pageX','$tree','SuppressedError','pageY','children','HasSubtype','nsu',':focus','/walk-backward','removeClass','scrollTop','ns=0;i=40',':first','input-error','data','val','SandyBrown','reference','status','<input\x20type=\x22checkbox\x22>','TypeDefinition','none','keyCode','POST','find','statusCode','callback','then','Object','<ul\x20class=\x22sterfive-tree\x22></ul>','ObjectType','preventDefault','toggleClass','_createMenu','grey','Objects','hasClass','$dropdown','_showMenu','fa-object-group','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','nodeId_nsu','stringify','sterfive-dropdown','toggle','DarkOrange','nodeId_aliased','apply','next','main-wrapper','nodes','slideDown','append','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20 \x20','fa-text-width','Method','prependTo','ns=0;i=47','bp_indexed','toString','displayName','$selectTrigger','View','aliased\x20NodeId:\x20','extension\x20object','value','HasProperty','reset','name','<i\x20class=\x22fa\x20fa-bookmark\x22/> \x20','browse\x20path:\x20','sterfive-info','<i\x20class=\x22fa\x20fa-id-card\x22/> \x20','aliased\x20browsePath:\x20','18px','Good','mousedown.red-ui-typedInput-focus-block','2404072IwAJAe','addClass','40lGNuiM','typeDefinition','3256785fCTmzZ','/opcua-for-node-red','json','<div\x20class=\x22info-text\x22></div>','show','loading','_showTypeMenu','<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>','input-group','red-ui-typedInput-focus','options','fa-cog','application/json','setMode','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','i=0','left','nodeBrowser','nodeId','233528xmqetw','556840lpecgX','$info','widget','filter','replaceWith','multiple','off','bp_aliased','ns=0;i=45','empty','statusText','OPCUA\x20Client\x20Extension\x20Object','text',');\x20-webkit-mask-image:\x20url(','mousedown','$elementDiv','checked','hide','focus','aliasedBrowsePath','element','expandable\x20expanded','194719yorGkG','<div>','CadetBlue','auto','css','ns=0;i=85','[value=\x27','<span\x20title=','browseResult','> \x20','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','fetched','/browse','HasChild','push','Variable','parent','nsu\x20nodeId:\x20','Both','BrowseName','fa-list-alt','Aliased\x20Browse\x20Path','disarmClick','tabindex','endpoint','Forward','right','Invalid','Value\x20is\x20not\x20verified','appendTo','nsuNodeID','20QQKQib','browseName','isSelectable','error','Inverse','Organizes','endpointNode','position','VariableType','$input','fa-sliders','statusCode:\x20','throw','red-ui-typedInput-icon\x20','ns=0;i=34','#C0DEED','63QXTnEQ','suppressed','join','label','verify','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','msg','attr','<i>','icon','animate','<div\x20class=\x22spinner\x22></div>','remove','ns=0;i=61','click','function','change','</span>','$menu','mode','DodgerBlue','_hideMenu','i=61','<li\x20key=\x22','$toggleTreeBtn','__parentNode','expanded','title','relativePath','namespaceAliases','564692EPbazL','browsePath','15666bFdQlD','><i\x20class=\x22fa\x20','Unspecified','indexOf','expandable','DataType','$inputGroup','$verifyBtn','before','parentNode','Structure','ns=0;i=46','assign','mask-image:\x20url(','dblclick','references',':visible','keydown','BrowsePath','opcua',';\x22></i>\x20','selected','DisplayName','#node-input-endpoint','failure','IsForward','catch','msg.','12nzTmvj','currentParent','!!failure!!','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>'];_0x3b6c=function(){return _0x34270c;};return _0x3b6c();}(function(_0x1e2d23,_0x35d02f){const _0x2aea83=_0x1a24,_0x5db208=_0x1e2d23();while(!![]){try{const _0xbd825e=parseInt(_0x2aea83(0x86))/0x1+-parseInt(_0x2aea83(0xec))/0x2*(parseInt(_0x2aea83(0xcc))/0x3)+parseInt(_0x2aea83(0xea))/0x4+-parseInt(_0x2aea83(0x87))/0x5*(parseInt(_0x2aea83(0x108))/0x6)+parseInt(_0x2aea83(0x9d))/0x7*(parseInt(_0x2aea83(0x71))/0x8)+-parseInt(_0x2aea83(0x73))/0x9+-parseInt(_0x2aea83(0xbc))/0xa*(-parseInt(_0x2aea83(0x6f))/0xb);if(_0xbd825e===_0x35d02f)break;else _0x5db208['push'](_0x5db208['shift']());}catch(_0x3ff3c2){_0x5db208['push'](_0x5db208['shift']());}}}(_0x3b6c,0x31444),(function(){'use strict';const _0x5251b6=_0x1a24;function _0x61a12a(_0x43f4e8,_0x70b43f,_0x3c1e63,_0x5a0f8f){function _0x5be3e0(_0x215899){return _0x215899 instanceof _0x3c1e63?_0x215899:new _0x3c1e63(function(_0x42e1af){_0x42e1af(_0x215899);});}return new(_0x3c1e63||(_0x3c1e63=Promise))(function(_0x5b70c1,_0x183a63){const _0x45f6c2=_0x1a24;function _0x536335(_0x51460b){const _0x233bd8=_0x1a24;try{_0x34ff8d(_0x5a0f8f[_0x233bd8(0x178)](_0x51460b));}catch(_0x226823){_0x183a63(_0x226823);}}function _0x5d7df7(_0x35e3e1){const _0x1b3a45=_0x1a24;try{_0x34ff8d(_0x5a0f8f[_0x1b3a45(0xc8)](_0x35e3e1));}catch(_0x2e6eaf){_0x183a63(_0x2e6eaf);}}function _0x34ff8d(_0x6d6d00){const _0x1af2b7=_0x1a24;_0x6d6d00['done']?_0x5b70c1(_0x6d6d00['value']):_0x5be3e0(_0x6d6d00[_0x1af2b7(0x189)])[_0x1af2b7(0x163)](_0x536335,_0x5d7df7);}_0x34ff8d((_0x5a0f8f=_0x5a0f8f[_0x45f6c2(0x177)](_0x43f4e8,_0x70b43f||[]))[_0x45f6c2(0x178)]());});}typeof SuppressedError==='function'?SuppressedError:function(_0xdd362a,_0x1f5b01,_0x1f0bd1){const _0x403026=_0x1a24;var _0x19f301=new Error(_0x1f0bd1);return _0x19f301[_0x403026(0x18c)]=_0x403026(0x14a),_0x19f301['error']=_0xdd362a,_0x19f301[_0x403026(0xcd)]=_0x1f5b01,_0x19f301;};const _0x18360f=_0x5251b6(0x12e),_0x3e9358=_0x5251b6(0xd9),_0x451e83=_0x5251b6(0x181),_0x586459=_0x5251b6(0xf7),_0x5c6720=_0x5251b6(0xca),_0x45dc8a=_0x5251b6(0x8f),_0x1479a6=_0x5251b6(0x153);var _0x5937c3;(function(_0xc50997){const _0xb385d2=_0x5251b6;_0xc50997[_0xc50997[_0xb385d2(0xb6)]=0x0]='Forward',_0xc50997[_0xc50997[_0xb385d2(0xc0)]=0x1]=_0xb385d2(0xc0),_0xc50997[_0xc50997['Both']=0x2]=_0xb385d2(0xaf),_0xc50997[_0xc50997[_0xb385d2(0xb8)]=0x3]='Invalid';}(_0x5937c3||(_0x5937c3={})));var _0x2371d1;(function(_0x1d05bc){const _0x56e991=_0x5251b6;_0x1d05bc[_0x1d05bc[_0x56e991(0xee)]=0x0]=_0x56e991(0xee),_0x1d05bc[_0x1d05bc[_0x56e991(0x164)]=0x1]=_0x56e991(0x164),_0x1d05bc[_0x1d05bc[_0x56e991(0xac)]=0x2]=_0x56e991(0xac),_0x1d05bc[_0x1d05bc['Method']=0x4]='Method',_0x1d05bc[_0x1d05bc[_0x56e991(0x166)]=0x8]=_0x56e991(0x166),_0x1d05bc[_0x1d05bc['VariableType']=0x10]=_0x56e991(0xc4),_0x1d05bc[_0x1d05bc[_0x56e991(0x138)]=0x20]=_0x56e991(0x138),_0x1d05bc[_0x1d05bc[_0x56e991(0xf1)]=0x40]=_0x56e991(0xf1),_0x1d05bc[_0x1d05bc[_0x56e991(0x186)]=0x80]=_0x56e991(0x186);}(_0x2371d1||(_0x2371d1={})));var _0x330354;(function(_0x58bf2e){const _0x3e5f0a=_0x5251b6;_0x58bf2e[_0x58bf2e['Object']=0x1]=_0x3e5f0a(0x164),_0x58bf2e[_0x58bf2e[_0x3e5f0a(0xac)]=0x2]=_0x3e5f0a(0xac),_0x58bf2e[_0x58bf2e['Method']=0x4]=_0x3e5f0a(0x17f),_0x58bf2e[_0x58bf2e[_0x3e5f0a(0x166)]=0x8]=_0x3e5f0a(0x166),_0x58bf2e[_0x58bf2e[_0x3e5f0a(0xc4)]=0x10]=_0x3e5f0a(0xc4),_0x58bf2e[_0x58bf2e[_0x3e5f0a(0x138)]=0x20]=_0x3e5f0a(0x138),_0x58bf2e[_0x58bf2e['DataType']=0x40]=_0x3e5f0a(0xf1),_0x58bf2e[_0x58bf2e[_0x3e5f0a(0x186)]=0x80]=_0x3e5f0a(0x186);}(_0x330354||(_0x330354={})));var _0x4f12a0;(function(_0x109e6f){const _0x310f1b=_0x5251b6;_0x109e6f[_0x109e6f[_0x310f1b(0x138)]=0x1]='ReferenceType',_0x109e6f[_0x109e6f[_0x310f1b(0x105)]=0x2]=_0x310f1b(0x105),_0x109e6f[_0x109e6f[_0x310f1b(0x141)]=0x4]=_0x310f1b(0x141),_0x109e6f[_0x109e6f[_0x310f1b(0xb0)]=0x8]=_0x310f1b(0xb0),_0x109e6f[_0x109e6f[_0x310f1b(0x102)]=0x10]=_0x310f1b(0x102),_0x109e6f[_0x109e6f[_0x310f1b(0x15c)]=0x20]='TypeDefinition';}(_0x4f12a0||(_0x4f12a0={})));function _0x3f99b0(_0x400253){const _0x576d2f=_0x5251b6;switch(_0x400253){case'Organizes':return _0x18360f;case _0x576d2f(0x18a):return _0x586459;case'HasComponent':return _0x451e83;case _0x576d2f(0xaa):return _0x5c6720;case _0x576d2f(0x14d):return _0x45dc8a;case'HasTypeDefinition':return _0x1479a6;}}const _0x5b623a=_0x43a657=>{const _0x273ef3=_0x5251b6;switch(_0x43a657[_0x273ef3(0x11e)]){case'Object':if(_0x43a657['referenceTypeId']===_0x18360f);if(_0x43a657[_0x273ef3(0x72)]===_0x3e9358||_0x43a657['referenceTypeId']===_0x273ef3(0xe2))return{'icon':'fa-folder','color':'rgba(61,\x2060,\x204,\x200.525)'};return{'icon':_0x273ef3(0x16f),'color':'SeaGreen'};case _0x273ef3(0xac):if(_0x43a657[_0x273ef3(0x140)]===_0x451e83)return{'icon':_0x273ef3(0xb1),'color':'SteelBlue'};else return _0x43a657[_0x273ef3(0x140)]===_0x586459?{'icon':_0x273ef3(0xb1),'color':_0x273ef3(0xe0)}:{'icon':_0x273ef3(0xb1),'color':_0x273ef3(0x9f)};case _0x273ef3(0x17f):return{'icon':_0x273ef3(0x7e),'color':_0x273ef3(0x158)};case _0x273ef3(0x166):return{'icon':_0x273ef3(0x16f),'color':_0x273ef3(0x175)};case _0x273ef3(0xc4):return{'icon':_0x273ef3(0xc6),'color':'DarkOrange'};case _0x273ef3(0xf1):return{'icon':_0x273ef3(0x17e),'color':_0x273ef3(0x9f)};}return{'icon':'fa-question','color':_0x273ef3(0x16a)};},_0x5521d6=(_0x24ee1d,_0x19b9d2,_0x1179b7)=>_0x61a12a(void 0x0,[_0x24ee1d,_0x19b9d2,_0x1179b7],void 0x0,function*({endpointNode:_0x4c020d,endpoint:_0x3fefe9,baseUrl:_0x172c3e},_0xdb4a59,_0x2922dd){const _0x5e0bb1=_0x5251b6,_0x19eaf3=_0x172c3e+_0x5e0bb1(0x74),_0x1cae16=_0x19eaf3+_0x5e0bb1(0xa9),_0x5df337=Object[_0x5e0bb1(0xf8)](Object['assign']({},_0x2922dd),{'nodeId':_0xdb4a59,'resultMask':0x3f}),_0x692309=yield fetch(_0x1cae16,{'method':_0x5e0bb1(0x15f),'body':JSON[_0x5e0bb1(0x172)]({'endpointNode':_0x4c020d,'endpoint':_0x3fefe9,'browseDescription':_0x5df337}),'headers':{'Content-Type':'application/json'}});if(_0x692309[_0x5e0bb1(0x15a)]!==0xc8)return console[_0x5e0bb1(0x12a)]('fetching\x20failed\x20with\x20error',_0x692309[_0x5e0bb1(0x15a)],_0x692309['statusText']),{'references':[]};const _0x3c47f0=yield _0x692309[_0x5e0bb1(0x75)](),_0x2a12b0=_0x3c47f0[_0x5e0bb1(0xa5)][_0x5e0bb1(0xfb)]||[];return{'references':_0x2a12b0};}),_0x18a2f6={'referenceTypeId':_0x3f99b0(_0x5251b6(0xaa)),'includeSubtypes':!![],'browseDirection':_0x5937c3['Forward'],'nodeClassMask':_0x2371d1[_0x5251b6(0xac)]|_0x2371d1[_0x5251b6(0x164)]|_0x2371d1[_0x5251b6(0x17f)],'resultMask':0x3f},_0x37acad={'referenceTypeId':_0x3f99b0(_0x5251b6(0xc1)),'includeSubtypes':!![],'browseDirection':_0x5937c3['Forward'],'nodeClassMask':_0x2371d1[_0x5251b6(0xac)]|_0x2371d1[_0x5251b6(0x164)]|_0x2371d1[_0x5251b6(0x17f)],'resultMask':0x3f},_0x116948=(_0x2f8afc,_0x1f63b9)=>_0x61a12a(void 0x0,[_0x2f8afc,_0x1f63b9],void 0x0,function*({endpointNode:_0x598057,endpoint:_0x4db17e,baseUrl:_0x30eca9},{nodeId:_0x4861f1,rootNodeId:_0x465f26,isType:_0x1930b6}){const _0x198d0b=_0x5251b6,_0x2fba5c=_0x30eca9+_0x198d0b(0x74),_0x2a49b6=_0x2fba5c+_0x198d0b(0x150),_0x13b0a7=yield fetch(_0x2a49b6,{'method':_0x198d0b(0x15f),'body':JSON[_0x198d0b(0x172)]({'endpointNode':_0x598057,'endpoint':_0x4db17e,'nodeId':_0x4861f1,'rootNodeId':_0x465f26,'isType':_0x1930b6}),'headers':{'Content-Type':_0x198d0b(0x7f)}});if(_0x13b0a7[_0x198d0b(0x15a)]!==0xc8)return null;const _0x419925=yield _0x13b0a7[_0x198d0b(0x75)]();return _0x419925['browsePath'];}),_0x597e8b=(_0x404df8,_0x3b36db)=>{const _0x11cc19=_0x5251b6;if(_0x404df8[_0x11cc19(0x161)]!=='Good')return _0x404df8[_0x11cc19(0x10c)];switch(_0x3b36db){case'browsePath':return _0x404df8[_0x11cc19(0x182)];case'aliasedBrowsePath':return _0x404df8[_0x11cc19(0x8e)]||_0x404df8['bp_indexed'];case _0x11cc19(0x13a):return _0x404df8[_0x11cc19(0x176)]||_0x404df8['nodeId_nsu'];case _0x11cc19(0xbb):return _0x404df8[_0x11cc19(0x171)];default:case'nodeId':return _0x404df8[_0x11cc19(0x85)];}},_0x3f090d=_0x43d3a2=>{const _0x40a3af=_0x5251b6;if(_0x43d3a2[_0x40a3af(0x161)]!==_0x40a3af(0x6d))return _0x40a3af(0xc7)+_0x43d3a2[_0x40a3af(0x161)];else{let _0x434649=[];return _0x434649[_0x40a3af(0xab)](_0x40a3af(0x127)+_0x43d3a2[_0x40a3af(0x85)]),_0x434649[_0x40a3af(0xab)](_0x40a3af(0x68)+_0x43d3a2[_0x40a3af(0x182)]),_0x434649['push'](_0x40a3af(0x115)+_0x2371d1[_0x43d3a2[_0x40a3af(0x11e)]]),_0x43d3a2['nodeId_nsu']&&_0x434649['push'](_0x40a3af(0xae)+_0x43d3a2[_0x40a3af(0x171)]),_0x43d3a2[_0x40a3af(0x176)]&&_0x434649[_0x40a3af(0xab)](_0x40a3af(0x187)+_0x43d3a2['nodeId_aliased']),_0x43d3a2[_0x40a3af(0x182)]&&_0x434649['push'](_0x40a3af(0x6b)+_0x43d3a2[_0x40a3af(0x8e)]),_0x434649[_0x40a3af(0xce)]('\x0a');}};function _0x23cb63(_0x2789c0){const _0x42c548=_0x5251b6;if(_0x2789c0[_0x42c548(0x12d)](/^nsu=/))return'nsuNodeID';if(_0x2789c0[_0x42c548(0x12d)](/^(ns=.*;)?(i|b|s|g)=/))return'nodeId';if(_0x2789c0[_0x42c548(0x12d)](/^nsa=/))return _0x42c548(0x13a);if(_0x2789c0[_0x42c548(0x12d)](/^(\/|\.)[0-9]+:/))return _0x42c548(0xeb);if(_0x2789c0[_0x42c548(0x12d)](/^(\/|\.).*:/))return _0x42c548(0xeb);}function _0x3b7a0f(_0x30ef20){const _0x10942e=_0x5251b6,_0x5051f6=_0x23cb63(_0x30ef20);switch(_0x5051f6){case _0x10942e(0x85):return'n';case _0x10942e(0x13a):return'na';case _0x10942e(0xbb):return _0x10942e(0x14e);case _0x10942e(0xeb):return'b';case _0x10942e(0x9a):return'ab';default:return't';}}function _0x553b55(_0x59ed11){const _0x1e4b83=_0x5251b6;let _0x1a4b13;switch(_0x59ed11){case'n':_0x1a4b13='nodeId';break;case'na':_0x1a4b13=_0x1e4b83(0x13a);break;case _0x1e4b83(0x14e):_0x1a4b13='nsuNodeID';break;case'b':_0x1a4b13=_0x1e4b83(0xeb);break;case'ab':_0x1a4b13=_0x1e4b83(0x9a);break;}return _0x1a4b13;}function _0x5036e8(_0x5034ab){const _0x2209b4=_0x5251b6;switch(_0x5034ab){case _0x2209b4(0x85):return'n';case _0x2209b4(0x13a):return'na';case _0x2209b4(0xbb):return'nsu';case _0x2209b4(0xeb):return'b';case'aliasedBrowsePath':return'ab';default:return't';}}const _0x1688b6=(_0x3b743b,_0x4b390f)=>_0x61a12a(void 0x0,[_0x3b743b,_0x4b390f],void 0x0,function*({endpointNode:_0x1ac599,endpoint:_0x1e81c4,baseUrl:_0x1e8882},_0x407302){const _0x376ea1=_0x5251b6,_0x2d66f9=_0x1e8882+_0x376ea1(0x74),_0x3ccb13=_0x2d66f9+_0x376ea1(0x112),_0x42b8bd=_0x1ac599['id'],_0x2abf4a=RED[_0x376ea1(0x17a)][_0x376ea1(0x146)](_0x42b8bd);console[_0x376ea1(0x12a)](_0x2abf4a[_0x376ea1(0xe9)]),_0x2abf4a[_0x376ea1(0xe9)];const _0x376499=_0x1ac599[_0x376ea1(0xe9)],_0x71051a=yield fetch(_0x3ccb13,{'method':_0x376ea1(0x15f),'body':JSON[_0x376ea1(0x172)]({'endpointNode':_0x1ac599,'endpoint':_0x1e81c4,'nodeId':_0x407302,'namespaceAliases':_0x376499}),'headers':{'Content-Type':'application/json'}}),_0x116fc7=yield _0x71051a[_0x376ea1(0x75)]();return{'json':_0x116fc7,'data':_0x71051a};}),_0x520aa4=(_0x22413a,_0x5467d7,_0x11b8fe,_0x2815f8)=>_0x61a12a(void 0x0,[_0x22413a,_0x5467d7,_0x11b8fe,_0x2815f8],void 0x0,function*({endpointNode:_0x4d2375,endpoint:_0x338be7,baseUrl:_0x384ebe},_0x180356,_0xae420d,_0x494b07){const _0x5056ba=_0x5251b6,_0x693d4c=_0xae420d[_0x5056ba(0x157)](),{json:_0x1e9ddb,data:_0x549cfc}=yield _0x1688b6({'endpointNode':_0x4d2375,'endpoint':_0x338be7,'baseUrl':_0x384ebe},_0x693d4c),_0x2d7458=(_0x61ad1,_0x43c549)=>{const _0xe507d=_0x5056ba;_0x494b07['text'](_0x61ad1)[_0xe507d(0x70)](_0xe507d(0x69))['addClass'](_0x43c549),_0x494b07[_0xe507d(0x77)](),setTimeout(()=>{const _0x57b590=_0xe507d;_0x494b07['removeClass'](_0x43c549),_0x494b07[_0x57b590(0x98)]();},0xbb8);};if(_0x549cfc[_0x5056ba(0x15a)]!==0xc8)return _0x2d7458(_0x5056ba(0x10a)+_0x693d4c,_0x5056ba(0x104)),![];else{if(_0x1e9ddb[_0x5056ba(0x161)]['match'](/Good/)){const _0x1f5f40=_0x3f090d(_0x1e9ddb);_0xae420d[_0x5056ba(0xd3)](_0x5056ba(0xe7),_0x1f5f40);const _0x21c709=_0x597e8b(_0x1e9ddb,_0x180356);return _0xae420d['val'](_0x21c709),_0xae420d[_0x5056ba(0x12b)](_0x5056ba(0xdc)),_0x2d7458(_0x5056ba(0x6d),'ok'),!![];}else return _0xae420d[_0x5056ba(0x157)](''+_0x693d4c),_0x2d7458(_0x1e9ddb['statusCode']+'\x20'+_0x549cfc[_0x5056ba(0x91)],'failure'),![];}});function _0x2d858f(_0x540f88,_0x2c5ee8){return _0x61a12a(this,void 0x0,void 0x0,function*(){const _0x1f593d=_0x1a24,_0x1eecee=_0x540f88[_0x1f593d(0x156)](_0x1f593d(0x189)),_0x3068d7=yield _0x5521d6(_0x2c5ee8,_0x1eecee,_0x18a2f6),_0x58945a=yield _0x5521d6(_0x2c5ee8,_0x1eecee,_0x37acad);return{'references':[..._0x3068d7['references'],..._0x58945a[_0x1f593d(0xfb)]]};});}const _0x253a92={'referenceTypeId':_0x3f99b0('HasSubtype'),'includeSubtypes':!![],'browseDirection':_0x5937c3[_0x5251b6(0xb6)],'nodeClassMask':_0x2371d1['ReferenceType']|_0x2371d1[_0x5251b6(0x166)]|_0x2371d1['DataType']|_0x2371d1[_0x5251b6(0xc4)],'resultMask':0x3f};function _0x312325(_0x4ff1a7,_0x1d4c54){return _0x61a12a(this,void 0x0,void 0x0,function*(){const _0x4310ed=_0x1a24,_0x18e356=_0x4ff1a7[_0x4310ed(0x156)]('value'),_0x3265c2=yield _0x5521d6(_0x1d4c54,_0x18e356,_0x253a92);return _0x3265c2;});}const _0x3fa093=_0x58cbcb=>{const _0x20eaa8=_0x5251b6;var _0x414405,_0x5800f2,_0x598a02,_0x15c889;if(!_0x58cbcb||!_0x58cbcb[_0x20eaa8(0x85)]){const _0x382bc1=$(_0x20eaa8(0xd1));return _0x382bc1;}const _0x6dc02=_0x58cbcb['nodeId']['toString'](),_0x337300=((_0x414405=_0x58cbcb[_0x20eaa8(0x184)])===null||_0x414405===void 0x0?void 0x0:_0x414405[_0x20eaa8(0x93)])||((_0x5800f2=_0x58cbcb['browseName'])===null||_0x5800f2===void 0x0?void 0x0:_0x5800f2[_0x20eaa8(0x18c)])||_0x58cbcb[_0x20eaa8(0x85)][_0x20eaa8(0x183)](),{icon:_0x3c19fa,color:_0x585877}=_0x5b623a(_0x58cbcb),_0x45ba43='('+_0x58cbcb[_0x20eaa8(0x85)][_0x20eaa8(0x183)]()+')\x20'+(((_0x598a02=_0x58cbcb['browseName'])===null||_0x598a02===void 0x0?void 0x0:_0x598a02[_0x20eaa8(0x18c)])||((_0x15c889=_0x58cbcb['displayName'])===null||_0x15c889===void 0x0?void 0x0:_0x15c889[_0x20eaa8(0x93)])||''),_0x3dd966=$(_0x20eaa8(0xe3)+_0x58cbcb['nodeId'][_0x20eaa8(0x183)]()+'\x22}><span\x20class=\x22tree-text\x22\x20title='+_0x45ba43+_0x20eaa8(0xed)+_0x3c19fa+_0x20eaa8(0x122)+_0x585877+_0x20eaa8(0x100)+_0x337300+_0x20eaa8(0x128));return _0x3dd966[_0x20eaa8(0x70)](_0x20eaa8(0xf0)),_0x3dd966['data'](_0x20eaa8(0x189),_0x6dc02),_0x3dd966[_0x20eaa8(0x156)]('reference',_0x58cbcb),_0x3dd966;},_0x1b2845=(_0x2a73eb,_0x6c771d)=>{const _0x7e393e=_0x5251b6;return _0x6c771d[_0x7e393e(0x160)]('li[key=\x22'+_0x2a73eb+'\x22]');},_0x324c33=(_0x5684a4,_0x519c9c)=>{const _0x4154be=_0x5251b6;_0x5684a4['$tree']['find'](_0x4154be(0x139))['removeClass']('selected'),_0x519c9c['find'](_0x4154be(0x121))['addClass'](_0x4154be(0x101));},_0x2dfcb1=(_0xaa1a9e,_0x18ff18,_0x373b42)=>_0x61a12a(void 0x0,void 0x0,void 0x0,function*(){const _0x60f07b=_0x5251b6;let _0x3c2877=_0x373b42[_0x60f07b(0x14c)](_0x60f07b(0x154));_0x18ff18[_0x60f07b(0xe8)][_0x60f07b(0x114)]||[];const _0x31a86a=_0x18ff18['nodeIds']||[];if(_0x31a86a['length']===0x0)return;for(const _0x558d07 of _0x31a86a){_0x3c2877[_0x60f07b(0x16c)](_0x60f07b(0xf0))&&(yield _0x4bc3f2(_0xaa1a9e,_0x3c2877));const _0x2853ec=_0x1b2845(_0x558d07,_0x3c2877);if(_0x2853ec[_0x60f07b(0x131)]===0x0)return;_0x3c2877=_0x2853ec;}_0x324c33(_0xaa1a9e,_0x3c2877),_0x2456db(_0xaa1a9e[_0x60f07b(0x16d)],_0x3c2877);});function _0x2456db(_0x472977,_0x59c273){const _0xa697b9=_0x5251b6,_0x262700=_0x59c273[_0xa697b9(0xc3)]()['top'],_0x5b7c38=_0x472977['scrollTop']();if(_0x5b7c38==undefined)return;const _0x1ac77e=_0x5b7c38+_0x262700-_0x472977[_0xa697b9(0x145)]()/0x2+_0x59c273[_0xa697b9(0x145)]()/0x2;_0x472977[_0xa697b9(0xd6)]({'scrollTop':_0x1ac77e},0x1f4);}const _0x516bc8=(_0x5dbc45,_0x50e8ab)=>_0x61a12a(void 0x0,void 0x0,void 0x0,function*(){const _0x49cf5d=_0x5251b6,_0x298f11=_0x5dbc45[_0x49cf5d(0xc5)][_0x49cf5d(0x157)](),_0x1d3c7b={'nodeId':_0x298f11,'rootNodeId':_0x50e8ab['nodeId'],'isType':_0x5dbc45[_0x49cf5d(0x7d)][_0x49cf5d(0x111)]||![]},_0x39e5ab=_0x512d84(_0x5dbc45),_0x49f4cb=yield _0x116948(_0x39e5ab,_0x1d3c7b);if(!_0x49f4cb)return;yield _0x2dfcb1(_0x5dbc45,_0x49f4cb,_0x5dbc45[_0x49cf5d(0x149)]);});function _0x28c5c6(_0x3564bd,_0xaa1e5,_0x4fa01e,_0x1e387c){return _0x61a12a(this,void 0x0,void 0x0,function*(){const _0x2b65c2=_0x1a24;if(_0xaa1e5[_0x2b65c2(0x16c)](_0x2b65c2(0xa8))){console[_0x2b65c2(0x12a)]('already\x20fetched');return;}if(_0xaa1e5[_0x2b65c2(0x16c)]('loading')){console[_0x2b65c2(0x12a)](_0x2b65c2(0x137));return;}_0xaa1e5[_0x2b65c2(0x70)]('loading'),_0xaa1e5[_0x2b65c2(0x17c)](_0x2b65c2(0xd7));try{_0xaa1e5['children']('ul')['empty']();const {references:_0x48f781}=yield _0x4fa01e(_0xaa1e5,_0x1e387c);_0x48f781['sort']((_0x31cdd2,_0x265cca)=>{const _0x1ac430=_0x2b65c2;var _0x7a777d,_0x3c571d;return(((_0x7a777d=_0x31cdd2[_0x1ac430(0xbd)])===null||_0x7a777d===void 0x0?void 0x0:_0x7a777d[_0x1ac430(0x18c)])||'')[_0x1ac430(0x123)](((_0x3c571d=_0x265cca[_0x1ac430(0xbd)])===null||_0x3c571d===void 0x0?void 0x0:_0x3c571d[_0x1ac430(0x18c)])||'');});for(const _0x437da3 of _0x48f781){if(_0x3564bd[_0x2b65c2(0x7d)][_0x2b65c2(0x8a)]&&!_0x3564bd[_0x2b65c2(0x7d)][_0x2b65c2(0x8a)](_0x437da3))continue;const _0x3a3374=_0x3fa093(_0x437da3);_0xaa1e5[_0x2b65c2(0x14c)]('ul')[_0x2b65c2(0x17c)](_0x3a3374);}_0xaa1e5[_0x2b65c2(0x70)](_0x2b65c2(0xa8));}catch(_0x1f87dc){_0xaa1e5[_0x2b65c2(0x14c)]('ul')[_0x2b65c2(0x17c)]('<li>error\x20'+_0x1f87dc['message']+_0x2b65c2(0x11c)),console[_0x2b65c2(0x12a)](_0x2b65c2(0x130),_0x1f87dc);}_0xaa1e5[_0x2b65c2(0x160)](_0x2b65c2(0x124))[_0x2b65c2(0xd8)](),_0xaa1e5[_0x2b65c2(0x151)](_0x2b65c2(0x78));});}function _0x512d84(_0x7f50d9){const _0x52e171=_0x5251b6,_0x126744={'baseUrl':_0x7f50d9[_0x52e171(0x7d)]['baseUrl'],'endpointNode':typeof _0x7f50d9[_0x52e171(0x7d)][_0x52e171(0xc2)]===_0x52e171(0xdb)?_0x7f50d9['options'][_0x52e171(0xc2)]():_0x7f50d9[_0x52e171(0x7d)][_0x52e171(0xc2)],'endpoint':typeof _0x7f50d9[_0x52e171(0x7d)]['endpoint']===_0x52e171(0xdb)?_0x7f50d9[_0x52e171(0x7d)][_0x52e171(0xb5)]():_0x7f50d9[_0x52e171(0x7d)][_0x52e171(0xb5)]};return _0x126744;}function _0x4bc3f2(_0x45f081,_0x4fc36f){return _0x61a12a(this,void 0x0,void 0x0,function*(){const _0x1fb20f=_0x1a24;if(_0x4fc36f[_0x1fb20f(0x16c)](_0x1fb20f(0xa8))){_0x4fc36f['removeClass']('expandable')[_0x1fb20f(0x70)](_0x1fb20f(0xe6)),_0x4fc36f[_0x1fb20f(0x14c)]('ul')[_0x1fb20f(0x174)]();return;}const _0x353f8e=_0x512d84(_0x45f081),_0x500813=!_0x45f081[_0x1fb20f(0x7d)][_0x1fb20f(0x111)]?_0x2d858f:_0x312325;try{yield _0x28c5c6(_0x45f081,_0x4fc36f,_0x500813,_0x353f8e),_0x4fc36f[_0x1fb20f(0x151)]('expandable')['addClass'](_0x1fb20f(0xe6));}catch(_0x3758b1){_0x4fc36f[_0x1fb20f(0x151)]('expandable')['addClass'](_0x1fb20f(0xe6)),console[_0x1fb20f(0x12a)](_0x1fb20f(0xbf),_0x3758b1);}});}const _0x6eeafe={'browseName':{'namespaceIndex':0x0,'name':'Objects'},'nodeClass':_0x5251b6(0x164),'nodeId':_0x5251b6(0xa2),'displayName':{'text':_0x5251b6(0x16b)},'typeDefinition':_0x3e9358},_0x2210a3=()=>{const _0x468f25=_0x5251b6;$[_0x468f25(0x89)](_0x468f25(0x10e),{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>_0x6eeafe,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x61a12a(this,void 0x0,void 0x0,function*(){const _0x31d5a9=_0x1a24,_0x24d860=this;if(_0x24d860[_0x31d5a9(0xe5)]==undefined){const _0x4f2b0c=typeof _0x24d860['options']['parentNode']===_0x31d5a9(0xdb)?_0x24d860[_0x31d5a9(0x7d)][_0x31d5a9(0xf5)]['call'](_0x24d860):_0x24d860[_0x31d5a9(0x7d)]['parentNode'];if(_0x4f2b0c instanceof Promise){const _0x43fc8d=yield _0x4f2b0c;_0x24d860[_0x31d5a9(0xe5)]=_0x43fc8d;}else _0x24d860[_0x31d5a9(0xe5)]=_0x4f2b0c;}return _0x24d860[_0x31d5a9(0xe5)]||_0x6eeafe;});},'reset'(){return _0x61a12a(this,void 0x0,void 0x0,function*(){const _0x2e4a65=_0x1a24,_0x275310=this,_0x213217=_0x275310;_0x213217[_0x2e4a65(0xe5)]=undefined,_0x275310[_0x2e4a65(0x149)][_0x2e4a65(0x90)]();const _0x41f6c0=yield this[_0x2e4a65(0x132)](),_0x2c61a5=_0x3fa093(_0x41f6c0);_0x275310[_0x2e4a65(0x149)][_0x2e4a65(0x17c)](_0x2c61a5),_0x275310[_0x2e4a65(0x109)]=_0x41f6c0;});},'verify'(_0x2402ac){const _0x444788=_0x468f25,_0x1a9881=this,_0x280e30=_0x512d84(_0x1a9881);_0x520aa4(_0x280e30,_0x2402ac,_0x1a9881[_0x444788(0xc5)],_0x1a9881['$info'])['then'](_0x215525=>{const _0x4fc24a=_0x444788;!_0x215525?_0x1a9881[_0x4fc24a(0x135)]['addClass'](_0x4fc24a(0x155)):_0x1a9881['$combo']['removeClass'](_0x4fc24a(0x155));});},'_hideMenu'(_0x1bbdb7){const _0x4f9325=_0x468f25,_0x3c60c3=this;$(document)[_0x4f9325(0x8d)](_0x4f9325(0x13b)),_0x1bbdb7['hide'](),_0x1bbdb7[_0x4f9325(0xa1)]({'height':_0x4f9325(0xa0)});if(_0x1bbdb7[_0x4f9325(0x13c)][_0x4f9325(0x8c)]){var _0x3df22f=[];_0x1bbdb7[_0x4f9325(0x160)](_0x4f9325(0x136))[_0x4f9325(0x142)](function(){const _0x1c189f=_0x4f9325;$(this)[_0x1c189f(0x144)](_0x1c189f(0x97))&&_0x3df22f[_0x1c189f(0xab)]($(this)[_0x1c189f(0x156)](_0x1c189f(0x189)));}),_0x1bbdb7[_0x4f9325(0x162)](_0x3df22f);}_0x3c60c3[_0x4f9325(0x96)]['is'](_0x4f9325(0xfc))?_0x3c60c3[_0x4f9325(0xc5)][_0x4f9325(0x12b)](_0x4f9325(0x99)):_0x3c60c3[_0x4f9325(0x185)][_0x4f9325(0x12b)](_0x4f9325(0x99));},'_createMenu'(_0x18135d,_0x1d43ca,_0x1fad1b){const _0x2c5391=_0x468f25;var _0x333660=this;const _0x1fdd82=$(_0x2c5391(0x9e))[_0x2c5391(0x70)](_0x2c5391(0x126));return _0x1fdd82[_0x2c5391(0x13c)]=_0x1d43ca,_0x1fdd82[_0x2c5391(0x162)]=_0x1fad1b,_0x18135d['forEach'](_0x548ecd=>{const _0x1dfb65=_0x2c5391;typeof _0x548ecd==='string'&&(_0x548ecd={'value':_0x548ecd,'label':_0x548ecd});var _0x425b90=$(_0x1dfb65(0x143))[_0x1dfb65(0xd3)]('value',_0x548ecd['value'])[_0x1dfb65(0xba)](_0x1fdd82);_0x548ecd[_0x1dfb65(0xcf)]&&_0x425b90[_0x1dfb65(0x93)](_0x548ecd['label']);_0x548ecd[_0x1dfb65(0xe7)]&&_0x425b90[_0x1dfb65(0x144)](_0x1dfb65(0xe7),_0x548ecd['title']);if(_0x548ecd[_0x1dfb65(0xd5)]){if(_0x548ecd[_0x1dfb65(0xd5)]['indexOf']('<')===0x0)$(_0x548ecd[_0x1dfb65(0xd5)])[_0x1dfb65(0x180)](_0x425b90);else _0x548ecd[_0x1dfb65(0xd5)][_0x1dfb65(0xef)]('/')!==-0x1?$('<i>',{'class':'red-ui-typedInput-icon','style':_0x1dfb65(0xf9)+_0x548ecd[_0x1dfb65(0xd5)]+_0x1dfb65(0x94)+_0x548ecd[_0x1dfb65(0xd5)]+');'})[_0x1dfb65(0x180)](_0x425b90):$(_0x1dfb65(0xd4),{'class':_0x1dfb65(0xc9)+_0x548ecd['icon']})['prependTo'](_0x425b90);}else _0x425b90[_0x1dfb65(0xa1)]({'paddingLeft':_0x1dfb65(0x6c)});!_0x548ecd[_0x1dfb65(0xd5)]&&!_0x548ecd[_0x1dfb65(0xcf)]&&_0x425b90[_0x1dfb65(0x93)](_0x548ecd[_0x1dfb65(0x189)]);var _0x41271d;_0x1d43ca['multiple']&&(_0x41271d=$(_0x1dfb65(0x15b))[_0x1dfb65(0xa1)]('pointer-events','none')[_0x1dfb65(0x156)](_0x1dfb65(0x189),_0x548ecd[_0x1dfb65(0x189)])[_0x1dfb65(0x180)](_0x425b90)['on'](_0x1dfb65(0x95),function(_0x5c926b){const _0x1f1c3b=_0x1dfb65;_0x5c926b[_0x1f1c3b(0x167)]();})),_0x425b90['on'](_0x1dfb65(0xda),function(_0xf1a144){const _0xba9348=_0x1dfb65;_0xf1a144['preventDefault'](),_0xf1a144[_0xba9348(0x10f)](),!_0x1d43ca[_0xba9348(0x8c)]?(_0x1fad1b(_0x548ecd[_0xba9348(0x189)]),_0x333660['_hideMenu'](_0x1fdd82)):_0x41271d[_0xba9348(0x144)](_0xba9348(0x97),!_0x41271d[_0xba9348(0x144)](_0xba9348(0x97)));});}),_0x1fdd82[_0x2c5391(0xa1)]({'display':_0x2c5391(0x15d)}),_0x1fdd82['on'](_0x2c5391(0xfd),function(_0xbc6f22){const _0x53509=_0x2c5391;if(_0xbc6f22['keyCode']===0x28)_0xbc6f22[_0x53509(0x167)](),$(this)[_0x53509(0x14c)](_0x53509(0x14f))[_0x53509(0x178)]()[_0x53509(0x12b)](_0x53509(0x99));else{if(_0xbc6f22[_0x53509(0x15e)]===0x26)_0xbc6f22[_0x53509(0x167)](),$(this)[_0x53509(0x14c)](':focus')[_0x53509(0x116)]()[_0x53509(0x12b)](_0x53509(0x99));else _0xbc6f22[_0x53509(0x15e)]===0x1b&&(_0xbc6f22['preventDefault'](),_0x333660[_0x53509(0xe1)](_0x1fdd82));}_0xbc6f22[_0x53509(0x10f)]();}),_0x1fdd82;},'disarmClick':![],'_showMenu'(_0x2f6698,_0xfb5910){const _0x5496d4=_0x468f25;if(this[_0x5496d4(0xb3)]){this['disarmClick']=![];return;}var _0x35cfa8=this,_0x3e0347=_0xfb5910[_0x5496d4(0x133)](),_0x58a6c6=_0xfb5910[_0x5496d4(0x145)](),_0x23ebf5=_0x2f6698['height'](),_0x137398=_0x58a6c6+_0x3e0347[_0x5496d4(0x110)];_0x137398+_0x23ebf5-$(document)[_0x5496d4(0x152)]()>$(window)[_0x5496d4(0x145)]()&&(_0x137398-=_0x137398+_0x23ebf5-$(window)[_0x5496d4(0x145)]()+0x5),_0x137398<0x0&&(_0x2f6698['height'](_0x23ebf5+_0x137398),_0x137398=0x0),_0x2f6698['css']({'top':_0x137398+'px','left':_0x3e0347[_0x5496d4(0x83)]+'px'}),_0x2f6698[_0x5496d4(0x17b)](0x64),this[_0x5496d4(0x13e)](function(){const _0x11cd26=_0x5496d4;_0x35cfa8[_0x11cd26(0x134)][_0x11cd26(0x70)]('red-ui-typedInput-focus'),$(document)['on'](_0x11cd26(0x13b),function(_0x408809){const _0x553344=_0x11cd26;!$(_0x408809['target'])[_0x553344(0x11a)](_0x2f6698)[_0x553344(0x131)]&&_0x35cfa8[_0x553344(0xe1)](_0x2f6698),$(_0x408809[_0x553344(0x13f)])[_0x553344(0x11a)](_0xfb5910)[_0x553344(0x131)]&&(_0x35cfa8[_0x553344(0xb3)]=!![],_0x408809[_0x553344(0x167)]());});});},'_showTypeMenu'(){const _0x21344b=_0x468f25,_0x3f0dfd=this;this[_0x21344b(0x16e)](_0x3f0dfd[_0x21344b(0xde)],_0x3f0dfd['$combo']),_0x3f0dfd[_0x21344b(0x16d)][_0x21344b(0x98)]();const _0x2fe350=_0x3f0dfd[_0x21344b(0x120)];var _0x21f831=_0x3f0dfd[_0x21344b(0xde)][_0x21344b(0x160)](_0x21344b(0xa3)+_0x2fe350+'\x27');setTimeout(function(){const _0x2eb4dd=_0x21344b;_0x21f831[_0x2eb4dd(0x12b)](_0x2eb4dd(0x99));},0x78);},'_initMenu'(){const _0x14ee2f=_0x468f25,_0x19a951=this;_0x19a951[_0x14ee2f(0x185)][_0x14ee2f(0xd3)](_0x14ee2f(0xb4),-0x1),_0x19a951[_0x14ee2f(0x185)]['on'](_0x14ee2f(0x6e),function(_0x26aef5){_0x26aef5['preventDefault']();});_0x19a951[_0x14ee2f(0xde)]&&_0x19a951['$menu'][_0x14ee2f(0xd8)]();const _0x40ceae=[{'label':_0x14ee2f(0x93),'value':'t','title':_0x14ee2f(0xb9),'icon':_0x14ee2f(0x81)},{'label':_0x14ee2f(0x107),'value':_0x14ee2f(0xd2),'title':_0x14ee2f(0x11f),'icon':_0x14ee2f(0x7a)},{'label':'NodeId','value':'n','icon':_0x14ee2f(0x17d)},{'label':'Aliased\x20NodeId','value':'na','icon':_0x14ee2f(0x18d)},{'label':_0x14ee2f(0x129),'value':'nsu','icon':_0x14ee2f(0x6a)},{'label':_0x14ee2f(0xfe),'value':'b','icon':'<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> '},{'label':_0x14ee2f(0xb2),'value':'ab','icon':'<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> '}],_0x3401c6=_0x3b7a0f(_0x19a951[_0x14ee2f(0xc5)][_0x14ee2f(0x157)]()),_0x4dae24=_0x40ceae[_0x14ee2f(0x160)](_0x1ab134=>_0x1ab134[_0x14ee2f(0x189)]===_0x3401c6);_0x19a951[_0x14ee2f(0x10d)]['empty']()[_0x14ee2f(0x17c)](_0x14ee2f(0xa4)+((_0x4dae24===null||_0x4dae24===void 0x0?void 0x0:_0x4dae24[_0x14ee2f(0xe7)])||'')+_0x14ee2f(0xa6)+((_0x4dae24===null||_0x4dae24===void 0x0?void 0x0:_0x4dae24[_0x14ee2f(0xd5)])||'')+_0x14ee2f(0xdd)),_0x19a951[_0x14ee2f(0x120)]=_0x3401c6;const _0x54d616=this;_0x19a951['$menu']=this[_0x14ee2f(0x169)](_0x40ceae,{},_0x5e57fa=>{const _0x3cf576=_0x14ee2f,_0x285ad4=_0x553b55(_0x5e57fa);_0x285ad4&&_0x54d616['verify'](_0x285ad4);const _0x1887fe=_0x40ceae[_0x3cf576(0x160)](_0x27765a=>_0x27765a[_0x3cf576(0x189)]===_0x5e57fa);_0x19a951[_0x3cf576(0x120)]=_0x5e57fa,_0x19a951[_0x3cf576(0x10d)][_0x3cf576(0x90)]()['append'](_0x3cf576(0xa4)+((_0x1887fe===null||_0x1887fe===void 0x0?void 0x0:_0x1887fe['title'])||'')+_0x3cf576(0xa6)+((_0x1887fe===null||_0x1887fe===void 0x0?void 0x0:_0x1887fe[_0x3cf576(0xd5)])||'')+_0x3cf576(0xdd));}),_0x19a951[_0x14ee2f(0xde)]['appendTo'](document[_0x14ee2f(0x11b)]),_0x19a951[_0x14ee2f(0xde)]['hide'](),_0x19a951[_0x14ee2f(0x185)][_0x14ee2f(0x77)]();},'mode'(){const _0x2487f3=_0x468f25,_0x32acf5=this;return _0x553b55(_0x32acf5[_0x2487f3(0x120)]);},'setMode'(_0x41a2f3){const _0x376fd9=_0x468f25,_0x1df85a=this,_0x1eb610=_0x5036e8(_0x41a2f3);_0x1df85a[_0x376fd9(0x120)]=_0x1eb610;},'_create'(){const _0x41d642=_0x468f25,_0x460c05=this;_0x460c05[_0x41d642(0xc5)]=this[_0x41d642(0x9b)],_0x460c05[_0x41d642(0xc5)][_0x41d642(0xa1)]('border',_0x41d642(0x15d)),_0x460c05[_0x41d642(0x96)]=_0x460c05['$input'][_0x41d642(0x13d)](_0x41d642(0x9e))[_0x41d642(0xad)]()[_0x41d642(0x70)](_0x41d642(0x179)),_0x460c05['$combo']=$(_0x41d642(0x12c)),_0x460c05[_0x41d642(0x135)][_0x41d642(0x70)]('sterfive-combo-box'),_0x460c05[_0x41d642(0xc5)][_0x41d642(0x8b)](_0x460c05[_0x41d642(0x135)]),_0x460c05[_0x41d642(0xf2)]=$(_0x41d642(0x12c))[_0x41d642(0x70)](_0x41d642(0x7b)),_0x460c05[_0x41d642(0x135)][_0x41d642(0x17c)](_0x460c05['$inputGroup']),_0x460c05[_0x41d642(0xf2)]['append'](_0x460c05['$input']),_0x460c05[_0x41d642(0xe4)]=$(_0x41d642(0x12f)),_0x460c05[_0x41d642(0xc5)][_0x41d642(0x119)](_0x460c05['$toggleTreeBtn']),_0x460c05[_0x41d642(0xe4)]['on'](_0x41d642(0xda),function(){return _0x61a12a(this,void 0x0,void 0x0,function*(){const _0x1ef610=_0x1a24;var _0x212f6b;let _0x7f8483=![],_0x2a7463;!_0x460c05['$dropdown']['is'](_0x1ef610(0xfc))&&(_0x460c05[_0x1ef610(0x88)][_0x1ef610(0x98)](),_0x2a7463=yield _0x460c05[_0x1ef610(0x132)](),(_0x2a7463!==_0x460c05[_0x1ef610(0x109)]||((_0x212f6b=_0x460c05[_0x1ef610(0x109)])===null||_0x212f6b===void 0x0?void 0x0:_0x212f6b[_0x1ef610(0x85)])!==_0x2a7463[_0x1ef610(0x85)])&&(yield _0x460c05[_0x1ef610(0x18b)]()),_0x7f8483=!![]),_0x460c05[_0x1ef610(0x16d)][_0x1ef610(0x174)](),_0x7f8483&&(yield _0x516bc8(_0x460c05,_0x2a7463));});}),_0x460c05['$verifyBtn']=$(_0x41d642(0x170)),_0x460c05[_0x41d642(0xc5)][_0x41d642(0x119)](_0x460c05[_0x41d642(0xf3)]),_0x460c05[_0x41d642(0xf3)]['on'](_0x41d642(0xda),()=>{const _0x365747=_0x41d642,_0x281796=_0x460c05[_0x365747(0xdf)]();if(!_0x281796)return;this[_0x365747(0xd0)](_0x281796);});const _0x4194fb=_0x2a090c=>_0x61a12a(this,void 0x0,void 0x0,function*(){const _0x3da114=_0x41d642,_0x1bafb3=this;let _0x471547=_0x1bafb3[_0x3da114(0xdf)]();if(!_0x471547)return;const _0x332fcf=_0x512d84(_0x1bafb3),{data:_0x40206b,json:_0x4b8b2f}=yield _0x1688b6(_0x332fcf,_0x2a090c);if(_0x40206b[_0x3da114(0x15a)]!==0xc8)return;if(_0x4b8b2f[_0x3da114(0x161)][_0x3da114(0x12d)](/Good/)){const _0x340d08=_0x597e8b(_0x4b8b2f,_0x471547);_0x1bafb3[_0x3da114(0xc5)][_0x3da114(0x157)](_0x340d08),_0x1bafb3[_0x3da114(0xc5)][_0x3da114(0x12b)](_0x3da114(0xdc));}});{_0x460c05[_0x41d642(0x134)]=$(_0x41d642(0x9e)),_0x460c05[_0x41d642(0xc5)][_0x41d642(0xf4)](_0x460c05[_0x41d642(0x134)]),_0x460c05[_0x41d642(0x185)]=$(_0x41d642(0x10b))[_0x41d642(0x180)](_0x460c05['$uiSelect']),$(_0x41d642(0x117))['toggle'](!![])[_0x41d642(0xba)](_0x460c05[_0x41d642(0x185)]),_0x460c05[_0x41d642(0x185)]['on'](_0x41d642(0xda),function(_0xef09c4){const _0xb417ae=_0x41d642;_0xef09c4['preventDefault'](),_0xef09c4[_0xb417ae(0x10f)](),_0x460c05[_0xb417ae(0x79)]();}),_0x460c05[_0x41d642(0x185)]['on'](_0x41d642(0xfd),function(_0x2c1aec){const _0x2f9f3e=_0x41d642;_0x2c1aec[_0x2f9f3e(0x15e)]===0x28&&_0x460c05['_showTypeMenu'](),_0x2c1aec[_0x2f9f3e(0x10f)]();})['on'](_0x41d642(0x99),function(){const _0x42c6c4=_0x41d642;_0x460c05[_0x42c6c4(0x134)][_0x42c6c4(0x70)](_0x42c6c4(0x7c));})['on'](_0x41d642(0x113),function(){const _0x3f4588=_0x41d642;_0x460c05[_0x3f4588(0x134)][_0x3f4588(0x151)](_0x3f4588(0x7c));}),_0x460c05[_0x41d642(0x10d)]=$('<span\x20class=\x22red-ui-typedInput-type-label\x22></span>')['appendTo'](_0x460c05[_0x41d642(0x185)]);}this['_initMenu']();!_0x460c05[_0x41d642(0xc5)][_0x41d642(0xd3)](_0x41d642(0x125))&&_0x460c05['$input'][_0x41d642(0xd3)](_0x41d642(0x125),_0x41d642(0xa7));_0x460c05[_0x41d642(0x88)]=$(_0x41d642(0x76)),_0x460c05['$info'][_0x41d642(0x98)](),_0x460c05[_0x41d642(0x135)][_0x41d642(0x17c)](_0x460c05[_0x41d642(0x88)]),_0x460c05['$dropdown']=$('<div/>')[_0x41d642(0x70)](_0x41d642(0x173))['hide']()['appendTo'](_0x460c05[_0x41d642(0x135)]),_0x460c05[_0x41d642(0x149)]=$(_0x41d642(0x165))['appendTo'](_0x460c05[_0x41d642(0x16d)]),this[_0x41d642(0x18b)]();const _0x371bb5=(_0x56888d,_0x4b12ae)=>{const _0x8541cf=_0x41d642,_0x400665=0x14,_0x283d87=0x14,_0x1b7dbb=_0x56888d['offset'](),_0x4b936d=_0x4b12ae;if(_0x4b936d[_0x8541cf(0x148)]>=_0x1b7dbb[_0x8541cf(0x83)]&&_0x4b936d[_0x8541cf(0x148)]<=_0x1b7dbb[_0x8541cf(0x83)]+_0x400665&&_0x4b936d[_0x8541cf(0x14b)]>=_0x1b7dbb[_0x8541cf(0x110)]&&_0x4b936d[_0x8541cf(0x14b)]<=_0x1b7dbb[_0x8541cf(0x110)]+_0x283d87)return!![];return![];},_0x3621a1=_0xc9f205=>_0x61a12a(this,void 0x0,void 0x0,function*(){const _0x269f28=_0x41d642;if(_0xc9f205[_0x269f28(0x16c)](_0x269f28(0xf0)))_0x4bc3f2(_0x460c05,_0xc9f205);else{if(_0xc9f205['hasClass'](_0x269f28(0xe6)))_0xc9f205['children']('ul')[_0x269f28(0x174)](),_0xc9f205[_0x269f28(0x168)](_0x269f28(0x9c));else{if(_0xc9f205[_0x269f28(0x14c)]('ul')['children']()[_0x269f28(0x131)]>0x0)_0xc9f205[_0x269f28(0x14c)]('ul')[_0x269f28(0x174)](),_0xc9f205[_0x269f28(0x168)](_0x269f28(0x9c));else;}}});_0x460c05[_0x41d642(0x149)]['on'](_0x41d642(0xfa),'li',function(_0xdbca2a){const _0x4869f2=_0x41d642;var _0x18ddb7,_0x4e0e20;_0xdbca2a[_0x4869f2(0x10f)]();let _0x52585a=$(this);if(_0x371bb5(_0x52585a,_0xdbca2a))_0x3621a1(_0x52585a);else{const _0x436b58=_0x52585a[_0x4869f2(0x156)]('value'),_0x218faf=_0x52585a[_0x4869f2(0x156)](_0x4869f2(0x159));if(_0x460c05[_0x4869f2(0x7d)][_0x4869f2(0xbe)]&&!_0x460c05[_0x4869f2(0x7d)][_0x4869f2(0xbe)](_0x218faf))return;_0x460c05[_0x4869f2(0xc5)][_0x4869f2(0x156)](_0x4869f2(0x159),_0x218faf),((_0x18ddb7=_0x218faf[_0x4869f2(0x184)])===null||_0x18ddb7===void 0x0?void 0x0:_0x18ddb7[_0x4869f2(0x93)])||((_0x4e0e20=_0x218faf[_0x4869f2(0xbd)])===null||_0x4e0e20===void 0x0?void 0x0:_0x4e0e20[_0x4869f2(0x18c)])||_0x218faf[_0x4869f2(0x85)][_0x4869f2(0x183)]();let _0x32d20c=_0x460c05[_0x4869f2(0xdf)]();!_0x32d20c&&(_0x32d20c=_0x4869f2(0x85),_0x460c05[_0x4869f2(0x80)](_0x32d20c)),_0x4194fb(_0x436b58)[_0x4869f2(0x163)](()=>{const _0x173740=_0x4869f2;_0x460c05[_0x173740(0x16d)][_0x173740(0x98)]();})[_0x4869f2(0x106)](_0x52564e=>{const _0x2c4773=_0x4869f2;_0x460c05[_0x2c4773(0x16d)][_0x2c4773(0x98)]();});}}),_0x460c05[_0x41d642(0x149)]['on']('click','li',function(_0x47ccd0){_0x47ccd0['stopPropagation']();let _0x144743=$(this);_0x371bb5(_0x144743,_0x47ccd0)&&_0x3621a1(_0x144743),_0x324c33(_0x460c05,_0x144743);}),$(document)['on'](_0x41d642(0xda),function(_0x17f133){const _0x1ca7f5=_0x41d642;!$(_0x17f133[_0x1ca7f5(0x13f)])[_0x1ca7f5(0x11a)](_0x460c05[_0x1ca7f5(0x135)])[_0x1ca7f5(0x131)]&&_0x460c05[_0x1ca7f5(0x16d)][_0x1ca7f5(0x98)]();});}});},_0x473516=()=>{const _0x3c564c=_0x5251b6,_0x304fcf=$(_0x3c564c(0x103)),_0x3d8cf1=_0x304fcf[_0x3c564c(0x157)](),_0xc03132=RED['nodes'][_0x3c564c(0x146)](_0x3d8cf1);if(!_0xc03132)return undefined;const {endpoint:_0x296eb2,securityMode:_0x357baf,securityPolicy:_0x3ddc62,userIdentityType:_0x2001e4,credentials:_0x382202,namespaceAliases:_0x5935c0}=_0xc03132,_0xc78b4f={'endpoint':_0x296eb2,'securityMode':_0x357baf,'securityPolicy':_0x3ddc62,'userIdentityType':_0x2001e4,'credentials':_0x382202,'namespaceAliases':_0x5935c0};return _0xc78b4f;},_0x5984f1=()=>{const _0x200fb1=_0x5251b6,_0x593db8=$(_0x200fb1(0x103)),_0x2f1caa=_0x593db8[_0x200fb1(0x157)](),_0x2b3ac9=_0x473516();if(!_0x2b3ac9)return undefined;const _0x4995c2=_0x2b3ac9[_0x200fb1(0xe9)];return Object['assign']({'namespaceAliases':_0x4995c2,'id':_0x2f1caa},_0x2b3ac9);},_0xa7ab8c=()=>{return{'endpointNode':_0x5984f1};};RED[_0x5251b6(0x17a)]['registerType'](_0x5251b6(0x11d),{'category':_0x5251b6(0xff),'color':_0x5251b6(0xcb),'align':_0x5251b6(0xb7),'icon':'../../icons/opcuanodeLogo.png','paletteLabel':_0x5251b6(0x188),'defaults':{'inputs':{'value':0x1},'output':{'value':0x1},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':'OpcUa-Endpoint2'},'dataType':{'value':'','required':!![]}},'inputs':0x1,'outputs':0x1,'label'(){const _0x58edf4=_0x5251b6;return this['name']||_0x58edf4(0x92);},'labelStyle'(){const _0x4e1e76=_0x5251b6;return this[_0x4e1e76(0x18c)]?'node_label_italic':'';},'oneditprepare'(){const _0x487b1d=_0x5251b6,_0x5b0473=this;_0x2210a3(),_0x5b0473[_0x487b1d(0x118)]=0x1;const _0x390535=$(_0x487b1d(0x147)),_0x593d93={'nodeId':'i=22','referenceTypeId':'','browseName':{'namespaceIndex':0x0,'name':_0x487b1d(0xf6)},'displayName':{'text':'Structure'},'nodeClass':'DataType','typeDefinition':_0x487b1d(0x82)};_0x390535[_0x487b1d(0x84)](Object[_0x487b1d(0xf8)](Object[_0x487b1d(0xf8)]({},_0xa7ab8c()),{'parentNode':()=>_0x593d93,'isSelectable'(_0x23ca2b){const _0x2e641f=_0x487b1d;return _0x23ca2b[_0x2e641f(0x11e)]===_0x2e641f(0xf1);},'isTypeRef':!![]}));},'oneditsave'(){}});}()));
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg2MWExMmEiLCJfMHg0M2Y0ZTgiLCJfMHg3MGI0M2YiLCJfMHgzYzFlNjMiLCJfMHg1YTBmOGYiLCJfMHg1YmUzZTAiLCJfMHgyMTU4OTkiLCJfMHg0MmUxYWYiLCJQcm9taXNlIiwiXzB4NWI3MGMxIiwiXzB4MTgzYTYzIiwiXzB4NTM2MzM1IiwiXzB4NTE0NjBiIiwiXzB4MzRmZjhkIiwiXzB4MjI2ODIzIiwiXzB4NWQ3ZGY3IiwiXzB4MzVlM2UxIiwiXzB4MmU2ZWFmIiwiXzB4NmQ2ZDAwIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4ZGQzNjJhIiwiXzB4MWY1YjAxIiwiXzB4MWYwYmQxIiwiXzB4MTlmMzAxIiwiRXJyb3IiLCJfMHgxODM2MGYiLCJfMHgzZTkzNTgiLCJfMHg0NTFlODMiLCJfMHg1ODY0NTkiLCJfMHg1YzY3MjAiLCJfMHg0NWRjOGEiLCJfMHgxNDc5YTYiLCJfMHg1OTM3YzMiLCJfMHhjNTA5OTciLCJfMHgyMzcxZDEiLCJfMHgxZDA1YmMiLCJfMHgzMzAzNTQiLCJfMHg1OGJmMmUiLCJfMHg0ZjEyYTAiLCJfMHgxMDllNmYiLCJfMHgzZjk5YjAiLCJfMHg0MDAyNTMiLCJfMHg1YjYyM2EiLCJfMHg0M2E2NTciLCJfMHg1NTIxZDYiLCJfMHgyNGVlMWQiLCJfMHgxOWI5ZDIiLCJfMHgxMTc5YjciLCJlbmRwb2ludE5vZGUiLCJfMHg0YzAyMGQiLCJlbmRwb2ludCIsIl8weDNmZWZlOSIsImJhc2VVcmwiLCJfMHgxNzJjM2UiLCJfMHhkYjRhNTkiLCJfMHgyOTIyZGQiLCJfMHgxOWVhZjMiLCJfMHgxY2FlMTYiLCJfMHg1ZGYzMzciLCJPYmplY3QiLCJfMHg2OTIzMDkiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4M2M0N2YwIiwiXzB4MmExMmIwIiwiXzB4MThhMmY2IiwiXzB4MzdhY2FkIiwiXzB4MTE2OTQ4IiwiXzB4MmY4YWZjIiwiXzB4MWY2M2I5IiwiXzB4NTk4MDU3IiwiXzB4NGRiMTdlIiwiXzB4MzBlY2E5Iiwibm9kZUlkIiwiXzB4NDg2MWYxIiwicm9vdE5vZGVJZCIsIl8weDQ2NWYyNiIsImlzVHlwZSIsIl8weDE5MzBiNiIsIl8weDJmYmE1YyIsIl8weDJhNDliNiIsIl8weDEzYjBhNyIsIl8weDQxOTkyNSIsIl8weDU5N2U4YiIsIl8weDQwNGRmOCIsIl8weDNiMzZkYiIsIl8weDNmMDkwZCIsIl8weDQzZDNhMiIsIl8weDQzNDY0OSIsIl8weDIzY2I2MyIsIl8weDI3ODljMCIsIl8weDNiN2EwZiIsIl8weDMwZWYyMCIsIl8weDUwNTFmNiIsIl8weDU1M2I1NSIsIl8weDU5ZWQxMSIsIl8weDFhNGIxMyIsIl8weDUwMzZlOCIsIl8weDUwMzRhYiIsIl8weDE2ODhiNiIsIl8weDNiNzQzYiIsIl8weDRiMzkwZiIsIl8weDFhYzU5OSIsIl8weDFlODFjNCIsIl8weDFlODg4MiIsIl8weDQwNzMwMiIsIl8weDJkNjZmOSIsIl8weDNjY2IxMyIsIl8weDQyYjhiZCIsIl8weDJhYmY0YSIsIlJFRCIsIl8weDM3NjQ5OSIsIl8weDcxMDUxYSIsIl8weDExNmZjNyIsIl8weDUyMGFhNCIsIl8weDIyNDEzYSIsIl8weDU0NjdkNyIsIl8weDExYjhmZSIsIl8weDI4MTVmOCIsIl8weDRkMjM3NSIsIl8weDMzOGJlNyIsIl8weDM4NGViZSIsIl8weDE4MDM1NiIsIl8weGFlNDIwZCIsIl8weDQ5NGIwNyIsIl8weDY5M2Q0YyIsImpzb24iLCJfMHgxZTlkZGIiLCJkYXRhIiwiXzB4NTQ5Y2ZjIiwiXzB4MmQ3NDU4IiwiXzB4NjFhZDEiLCJfMHg0M2M1NDkiLCJzZXRUaW1lb3V0IiwiXzB4MWY1ZjQwIiwiXzB4MjFjNzA5IiwiXzB4MmQ4NThmIiwiXzB4NTQwZjg4IiwiXzB4MmM1ZWU4IiwiXzB4MWVlY2VlIiwiXzB4MzA2OGQ3IiwiXzB4NTg5NDVhIiwiXzB4MjUzYTkyIiwiXzB4MzEyMzI1IiwiXzB4NGZmMWE3IiwiXzB4MWQ0YzU0IiwiXzB4MThlMzU2IiwiXzB4MzI2NWMyIiwiXzB4M2ZhMDkzIiwiXzB4NThjYmNiIiwiXzB4NDE0NDA1IiwiXzB4NTgwMGYyIiwiXzB4NTk4YTAyIiwiXzB4MTVjODg5IiwiXzB4MzgyYmMxIiwiJCIsIl8weDZkYzAyIiwiXzB4MzM3MzAwIiwiaWNvbiIsIl8weDNjMTlmYSIsImNvbG9yIiwiXzB4NTg1ODc3IiwiXzB4NDViYTQzIiwiXzB4M2RkOTY2IiwiXzB4MWIyODQ1IiwiXzB4MmE3M2ViIiwiXzB4NmM3NzFkIiwiXzB4MzI0YzMzIiwiXzB4NTY4NGE0IiwiXzB4NTE5YzljIiwiXzB4MmRmY2IxIiwiXzB4YWExYTllIiwiXzB4MThmZjE4IiwiXzB4MzczYjQyIiwiXzB4M2MyODc3IiwiXzB4MzFhODZhIiwiXzB4NTU4ZDA3IiwiXzB4NGJjM2YyIiwiXzB4Mjg1M2VjIiwiXzB4MjQ1NmRiIiwiXzB4NDcyOTc3IiwiXzB4NTljMjczIiwiXzB4MjYyNzAwIiwiXzB4NWI3YzM4IiwidW5kZWZpbmVkIiwiXzB4MWFjNzdlIiwiXzB4NTE2YmM4IiwiXzB4NWRiYzQ1IiwiXzB4NTBlOGFiIiwiXzB4Mjk4ZjExIiwiXzB4MWQzYzdiIiwiXzB4MzllNWFiIiwiXzB4NTEyZDg0IiwiXzB4NDlmNGNiIiwiXzB4MjhjNWM2IiwiXzB4MzU2NGJkIiwiXzB4YWExZTUiLCJfMHg0ZmEwMWUiLCJfMHgxZTM4N2MiLCJyZWZlcmVuY2VzIiwiXzB4NDhmNzgxIiwiXzB4MzFjZGQyIiwiXzB4MjY1Y2NhIiwiXzB4N2E3NzdkIiwiXzB4M2M1NzFkIiwiXzB4NDM3ZGEzIiwiXzB4M2EzMzc0IiwiXzB4MWY4N2RjIiwiXzB4N2Y1MGQ5IiwiXzB4MTI2NzQ0IiwiXzB4NDVmMDgxIiwiXzB4NGZjMzZmIiwiXzB4MzUzZjhlIiwiXzB4NTAwODEzIiwiXzB4Mzc1OGIxIiwiXzB4NmVlYWZlIiwiXzB4MjIxMGEzIiwiXzB4MjRkODYwIiwiXzB4NGYyYjBjIiwiXzB4NDNmYzhkIiwiXzB4Mjc1MzEwIiwiXzB4MjEzMjE3IiwiXzB4NDFmNmMwIiwiXzB4MmM2MWE1IiwiXzB4MjQwMmFjIiwiXzB4MWE5ODgxIiwiXzB4MjgwZTMwIiwiXzB4MjE1NTI1IiwiXzB4MWJiZGI3IiwiXzB4M2M2MGMzIiwiZG9jdW1lbnQiLCJfMHgzZGYyMmYiLCJfMHgxODEzNWQiLCJfMHgxZDQzY2EiLCJfMHgxZmFkMWIiLCJfMHgzMzM2NjAiLCJfMHgxZmRkODIiLCJfMHg1NDhlY2QiLCJfMHg0MjViOTAiLCJfMHg0MTI3MWQiLCJfMHg1YzkyNmIiLCJfMHhmMWExNDQiLCJfMHhiYzZmMjIiLCJfMHgyZjY2OTgiLCJfMHhmYjU5MTAiLCJfMHgzNWNmYTgiLCJfMHgzZTAzNDciLCJfMHg1OGE2YzYiLCJfMHgyM2ViZjUiLCJfMHgxMzczOTgiLCJ3aW5kb3ciLCJfMHg0MDg4MDkiLCJfMHgzZjBkZmQiLCJfMHgyZmUzNTAiLCJfMHgyMWY4MzEiLCJfMHgxOWE5NTEiLCJfMHgyNmFlZjUiLCJfMHg0MGNlYWUiLCJfMHgzNDAxYzYiLCJfMHg0ZGFlMjQiLCJfMHgxYWIxMzQiLCJfMHg1NGQ2MTYiLCJfMHg1ZTU3ZmEiLCJfMHgyODVhZDQiLCJfMHgxODg3ZmUiLCJfMHgyNzc2NWEiLCJfMHgzMmFjZjUiLCJfMHg0MWEyZjMiLCJfMHgxZGY4NWEiLCJfMHgxZWI2MTAiLCJfMHg0NjBjMDUiLCJfMHgyMTJmNmIiLCJfMHg3Zjg0ODMiLCJfMHgyYTc0NjMiLCJfMHgyODE3OTYiLCJfMHg0MTk0ZmIiLCJfMHgyYTA5MGMiLCJfMHgxYmFmYjMiLCJfMHg0NzE1NDciLCJfMHgzMzJmY2YiLCJfMHg0MDIwNmIiLCJfMHg0YjhiMmYiLCJfMHgzNDBkMDgiLCJfMHhlZjA5YzQiLCJfMHgyYzFhZWMiLCJfMHgzNzFiYjUiLCJfMHg1Njg4OGQiLCJfMHg0YjEyYWUiLCJfMHg0MDA2NjUiLCJfMHgyODNkODciLCJfMHgxYjdkYmIiLCJfMHg0YjkzNmQiLCJfMHgzNjIxYTEiLCJfMHhjOWYyMDUiLCJfMHhkYmNhMmEiLCJfMHgxOGRkYjciLCJfMHg0ZTBlMjAiLCJfMHg1MjU4NWEiLCJfMHg0MzZiNTgiLCJfMHgyMThmYWYiLCJfMHgzMmQyMGMiLCJfMHg1MjU2NGUiLCJfMHg0N2NjZDAiLCJfMHgxNDQ3NDMiLCJfMHgxN2YxMzMiLCJfMHg0NzM1MTYiLCJfMHgzMDRmY2YiLCJfMHgzZDhjZjEiLCJfMHhjMDMxMzIiLCJfMHgyOTZlYjIiLCJzZWN1cml0eU1vZGUiLCJfMHgzNTdiYWYiLCJzZWN1cml0eVBvbGljeSIsIl8weDNkZGM2MiIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHgyMDAxZTQiLCJjcmVkZW50aWFscyIsIl8weDM4MjIwMiIsIm5hbWVzcGFjZUFsaWFzZXMiLCJfMHg1OTM1YzAiLCJfMHhjNzhiNGYiLCJfMHg1OTg0ZjEiLCJfMHg1OTNkYjgiLCJfMHgyZjFjYWEiLCJfMHgyYjNhYzkiLCJfMHg0OTk1YzIiLCJfMHhhN2FiOGMiLCJfMHg1YjA0NzMiLCJfMHgzOTA1MzUiLCJfMHg1OTNkOTMiLCJfMHgyM2NhMmIiXSwibWFwcGluZ3MiOiJ5K0tBQUEsQ0FBQyxVLENBQ0csYSx3QkFtQkEsU0FBU0EsU0FBVCxDQUFtQkMsU0FBbkIsQ0FBNEJDLFNBQTVCLENBQXdDQyxTQUF4QyxDQUEyQ0MsU0FBM0MsQyxDQUNJLFNBQVNDLFNBQVQsQ0FBZUMsU0FBZixDLFFBQStCQSxTQUFBLFlBQWlCSCxTQUFqQixDQUFxQkcsU0FBckIsQ0FBNkIsSUFBSUgsU0FBSixDQUFNLFNBQVVJLFNBQVYsQyxDQUFxQkEsU0FBQSxDQUFRRCxTQUFSLEMsRUFBM0IsQyxTQUNyRCxHQUFLLENBQUFILFNBQUEsRUFBTSxDQUFBQSxTQUFBLENBQUlLLE9BQUosQ0FBTixDQUFMLENBQXlCLFNBQVVDLFNBQVYsQ0FBbUJDLFNBQW5CLEMseUJBQzVCLFNBQVNDLFNBQVQsQ0FBbUJDLFNBQW5CLEMseUJBQTRCLEcsQ0FBTUMsU0FBQSxDQUFLVCxTQUFBLEMsZ0JBQUEsRUFBZVEsU0FBZixDQUFMLEMsRUFBK0IsTUFBT0UsU0FBUCxDLENBQVlKLFNBQUEsQ0FBT0ksU0FBUCxDLEdBQzdFLFNBQVNDLFNBQVQsQ0FBa0JDLFNBQWxCLEMseUJBQTJC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b0QsQyxPQWdCcEQsRSxrQ0FDVyxLLE1BQUEsRyxpQkFqQnlDLEMsWUFtQnBELEUsa0NBQ1csSyxnQkFBQSxFLG1CQUFBLEMsSUFwQnlDLEMsZUFzQnBELEUsMkJBQ1V5TixTQUFBLENBQU8sSSxDQUNiL0csU0FBQSxFLENBQ0ErRyxTQUFBLEMsZ0JBQUEsRSxHQURBLENBRUEsTUFBTUMsU0FBQSxDQUFZN0ssQ0FBQSxDLGdCQUFBLENBQWxCLENBQ004SyxTQUFBLENBQXFCLEMsUUFDdkIsQyxNQUR1QixDLGlCQUV2QixDLEVBRnVCLEMsWUFHdkIsQ0FBWSxDLGdCQUFFLEMsR0FBRixDLE1BQXFCLEMsZUFBckIsQ0FIVyxDLGFBSXZCLENBQWEsQyxNQUFFLEMsV0FBRixDQUpVLEMsV0FLdkIsQyxVQUx1QixDLGdCQU12QixDLGVBTnVCLENBRDNCLENBU0FELFNBQUEsQyxlQUFBLEVBQXNCOVEsTUFBQSxDLGVBQUEsRUFBY0EsTUFBQSxDLGVBQUEsRUFBYyxFQUFkLENBQWtCNFEsU0FBQSxFQUFsQixDQUFkLENBQWlFLEMsWUFBRSxDQUFZLElBQU1HLFNBQXBCLEMsY0FBd0MsQ0FBYUMsU0FBYixDLGtDQUNoSEEsU0FBQSxDLGdCQUFBLEksaUJBRHdFLEMsV0FFaEYsQyxJQUZnRixDQUFqRSxDQUF0QixDLEVBbkNnRCxDLFlBdUNwRCxFLEVBdkNvRCxDQUF4RCxDLEVBbmhDSixHIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcbiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sLCBJdGVyYXRvciAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGNvbnN0IE9yZ2FuaXplc1JlZk5vZGVJZCA9IFwibnM9MDtpPTM1XCI7XG4gICAgY29uc3QgRm9sZGVyVHlwZSA9IFwibnM9MDtpPTYxXCI7XG4gICAgY29uc3QgSGFzQ29tcG9uZW50UmVmTm9kZUlkID0gXCJucz0wO2k9NDdcIjtcbiAgICBjb25zdCBIYXNQcm9wZXJ0eVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ2XCI7XG4gICAgY29uc3QgSGFzQ2hpbGRSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNFwiO1xuICAgIGNvbnN0IEhhc1N1YnR5cGVSZWZOb2RlSWQgPSBcIm5zPTA7aT00NVwiO1xuICAgIGNvbnN0IEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkID0gXCJucz0wO2k9NDBcIjtcblxuICAgIHZhciBCcm93c2VEaXJlY3Rpb247XG4gICAgKGZ1bmN0aW9uIChCcm93c2VEaXJlY3Rpb24pIHtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkZvcndhcmRcIl0gPSAwXSA9IFwiRm9yd2FyZFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52ZXJzZVwiXSA9IDFdID0gXCJJbnZlcnNlXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJCb3RoXCJdID0gMl0gPSBcIkJvdGhcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmFsaWRcIl0gPSAzXSA9IFwiSW52YWxpZFwiO1xuICAgIH0pKEJyb3dzZURpcmVjdGlvbiB8fCAoQnJvd3NlRGlyZWN0aW9uID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzKSB7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJVbnNwZWNpZmllZFwiXSA9IDBdID0gXCJVbnNwZWNpZmllZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3MgfHwgKE5vZGVDbGFzcyA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzc01hc2s7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3NNYXNrKSB7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3NNYXNrIHx8IChOb2RlQ2xhc3NNYXNrID0ge30pKTtcbiAgICB2YXIgUmVzdWx0TWFzaztcbiAgICAoZnVuY3Rpb24gKFJlc3VsdE1hc2spIHtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDFdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIklzRm9yd2FyZFwiXSA9IDJdID0gXCJJc0ZvcndhcmRcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiTm9kZUNsYXNzXCJdID0gNF0gPSBcIk5vZGVDbGFzc1wiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJCcm93c2VOYW1lXCJdID0gOF0gPSBcIkJyb3dzZU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiRGlzcGxheU5hbWVcIl0gPSAxNl0gPSBcIkRpc3BsYXlOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlR5cGVEZWZpbml0aW9uXCJdID0gMzJdID0gXCJUeXBlRGVmaW5pdGlvblwiO1xuICAgIH0pKFJlc3VsdE1hc2sgfHwgKFJlc3VsdE1hc2sgPSB7fSkpO1xuICAgIC8vICBjb25zdCBxID0gUmVmZXJlbmNlVHlwZUlkcy5Pcmdhbml6ZXM7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVJZChub2RlSWRMaWtlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZUlkTGlrZSkge1xuICAgICAgICAgICAgY2FzZSBcIk9yZ2FuaXplc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPcmdhbml6ZXNSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzUHJvcGVydHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzUHJvcGVydHlSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NvbXBvbmVudFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDaGlsZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDaGlsZFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNTdWJ0eXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1N1YnR5cGVSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzVHlwZURlZmluaXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRJY29uID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5ub2RlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gT3JnYW5pemVzUmVmTm9kZUlkKSA7XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS50eXBlRGVmaW5pdGlvbiA9PT0gRm9sZGVyVHlwZSB8fCByZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBcImk9NjFcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWZvbGRlclwiLCBjb2xvcjogXCJyZ2JhKDYxLCA2MCwgNCwgMC41MjUpXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiU2VhR3JlZW5cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc0NvbXBvbmVudFJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIlN0ZWVsQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc1Byb3BlcnR5UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiRG9kZ2VyQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIk1ldGhvZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtY29nXCIsIGNvbG9yOiBcIlNhbmR5QnJvd25cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXNsaWRlcnNcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiRGF0YVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXRleHQtd2lkdGhcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQsIHRlbXBsYXRlKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1mb3Itbm9kZS1yZWRgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJicm93c2UgZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB3YWxrQmFja3dhcmQgPSAoX2EsIF9iKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIF9iXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCB7IG5vZGVJZCwgcm9vdE5vZGVJZCwgaXNUeXBlIH0pIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L3dhbGstYmFja3dhcmRgO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgcm9vdE5vZGVJZCxcbiAgICAgICAgICAgICAgICBpc1R5cGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgcmV0dXJuIGpzb24uYnJvd3NlUGF0aDtcbiAgICB9KTtcbiAgICBjb25zdCBjaG9vc2VOb2RlSWQgPSAoZGF0YSwgbW9kZSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXNDb2RlICE9PSBcIkdvb2RcIikge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEucmVxdWVzdGVkTm9kZUlkO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5icF9pbmRleGVkO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWRCcm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuYnBfYWxpYXNlZCB8fCBkYXRhLmJwX2luZGV4ZWQ7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZE5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZF9hbGlhc2VkIHx8IGRhdGEubm9kZUlkX25zdTtcbiAgICAgICAgICAgIGNhc2UgXCJuc3VOb2RlSURcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5ub2RlSWRfbnN1O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhc2UgXCJub2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5ub2RlSWQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG1ha2VUb29sdGlwID0gKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzQ29kZSAhPT0gXCJHb29kXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBgc3RhdHVzQ29kZTogJHtkYXRhLnN0YXR1c0NvZGV9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzdHIgPSBbXTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBub2RlSWQ6ICR7ZGF0YS5ub2RlSWR9YCk7XG4gICAgICAgICAgICBzdHIucHVzaChgYnJvd3NlIHBhdGg6ICR7ZGF0YS5icF9pbmRleGVkfWApO1xuICAgICAgICAgICAgc3RyLnB1c2goYG5vZGUgY2xhc3M6ICR7Tm9kZUNsYXNzW2RhdGEubm9kZUNsYXNzXX1gKTtcbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGVJZF9uc3UpIHtcbiAgICAgICAgICAgICAgICBzdHIucHVzaChgbnN1IG5vZGVJZDogJHtkYXRhLm5vZGVJZF9uc3V9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS5ub2RlSWRfYWxpYXNlZCkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBhbGlhc2VkIE5vZGVJZDogJHtkYXRhLm5vZGVJZF9hbGlhc2VkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEuYnBfaW5kZXhlZCkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBhbGlhc2VkIGJyb3dzZVBhdGg6ICR7ZGF0YS5icF9hbGlhc2VkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN0ci5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBmaWd1cmVPdXRNb2RlKGVuaGFuY2VkTm9kZUlkKSB7XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXm5zdT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwibnN1Tm9kZUlEXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9eKG5zPS4qOyk/KGl8YnxzfGcpPS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJub2RlSWRcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL15uc2E9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcImFsaWFzZWROb2RlSWRcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14oXFwvfFxcLilbMC05XSs6LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcImJyb3dzZVBhdGhcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14oXFwvfFxcLikuKjovKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZpZ3VyZU91dE1lblVJdGVtVmFsdWUoc3RyKSB7XG4gICAgICAgIGNvbnN0IG1vZGUgPSBmaWd1cmVPdXRNb2RlKHN0cik7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5cIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibmFcIjtcbiAgICAgICAgICAgIGNhc2UgXCJuc3VOb2RlSURcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuc3VcIjtcbiAgICAgICAgICAgIGNhc2UgXCJicm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYlwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWRCcm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYWJcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidFwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRvTW9kZSh2KSB7XG4gICAgICAgIGxldCBtb2RlO1xuICAgICAgICBzd2l0Y2ggKHYpIHtcbiAgICAgICAgICAgIGNhc2UgXCJuXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwibm9kZUlkXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibmFcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJhbGlhc2VkTm9kZUlkXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibnN1XCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwibnN1Tm9kZUlEXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiYlwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImJyb3dzZVBhdGhcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJhYlwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImFsaWFzZWRCcm93c2VQYXRoXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZyb21Nb2RlKG1vZGUpIHtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwibm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiblwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWROb2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuYVwiO1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5zdVwiO1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJiXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhYlwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ0XCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgX2NhbGxDaGVja05vZGVJZCA9IChfYSwgbm9kZUlkXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vY2hlY2tOb2RlSWRgO1xuICAgICAgICBjb25zdCBlSWQgPSBlbmRwb2ludE5vZGUuaWQ7XG4gICAgICAgIGNvbnN0IG4gPSBSRUQubm9kZXMubm9kZShlSWQpO1xuICAgICAgICBjb25zb2xlLmxvZyhuLm5hbWVzcGFjZUFsaWFzZXMpO1xuICAgICAgICBuLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIGNvbnN0IG5hbWVzcGFjZUFsaWFzZXMgPSBlbmRwb2ludE5vZGUubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgICAgIG5hbWVzcGFjZUFsaWFzZXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4geyBqc29uLCBkYXRhIH07XG4gICAgfSk7XG4gICAgY29uc3QgaW50ZXJuYWxWZXJpZnkgPSAoX2EsIG1vZGVfMSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG1vZGVfMSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBtb2RlLCAkaW5wdXRFbGVtZW50LCAkaW5mbykge1xuICAgICAgICBjb25zdCBlbmhhbmNlZE5vZGVJZCA9ICRpbnB1dEVsZW1lbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHsganNvbiwgZGF0YSB9ID0geWllbGQgX2NhbGxDaGVja05vZGVJZCh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgZW5oYW5jZWROb2RlSWQpO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZztcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIiEhZmFpbHVyZSEhXCIgKyBlbmhhbmNlZE5vZGVJZCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vbHRpcCA9IG1ha2VUb29sdGlwKGpzb24pO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQuYXR0cihcInRpdGxlXCIsIHRvb2x0aXApO1xuICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZUlkID0gY2hvb3NlTm9kZUlkKGpzb24sIG1vZGUpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKHNlbGVjdGVkTm9kZUlkKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7ZW5oYW5jZWROb2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKGAke2pzb24uc3RhdHVzQ29kZX0gJHtkYXRhLnN0YXR1c1RleHR9YCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGlmICghcmVmZXJlbmNlIHx8ICFyZWZlcmVuY2Uubm9kZUlkKSB7XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhIGZhLWVycm9yXCIgc3R5bGU9XCJjb2xvcjpyZWQ7XCI+PC9pPm5vIHJlZmVyZW5jZSAhPHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgeyBpY29uLCBjb2xvciB9ID0gZ2V0SWNvbihyZWZlcmVuY2UpO1xuICAgICAgICBjb25zdCB0aXRsZSA9IGAoJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9KSAkeygoX2MgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm5hbWUpIHx8ICgoX2QgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50ZXh0KSB8fCBcIlwifWA7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpIGtleT1cIiR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfVwifT48c3BhbiBjbGFzcz1cInRyZWUtdGV4dFwiIHRpdGxlPSR7dGl0bGV9PjxpIGNsYXNzPVwiZmEgJHtpY29ufVwiIHN0eWxlPVwiY29sb3I6JHtjb2xvcn07XCI+PC9pPiAke3R9PC9zcGFuPjx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICRlbGVtZW50LmFkZENsYXNzKFwiZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInZhbHVlXCIsIG4pO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICB9O1xuICAgIGNvbnN0IGZpbmRFbGVtZW50ID0gKG5vZGVJZCwgJHRyZWUpID0+IHtcbiAgICAgICAgcmV0dXJuICR0cmVlLmZpbmQoYGxpW2tleT1cIiR7bm9kZUlkfVwiXWApO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0U2luZ2xlID0gKHRoYXQsICRsaSkgPT4ge1xuICAgICAgICB0aGF0LiR0cmVlLmZpbmQoXCJsaSA+IC50cmVlLXRleHRcIikucmVtb3ZlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgLy8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zXG4gICAgICAgICRsaS5maW5kKFwiLnRyZWUtdGV4dDpmaXJzdFwiKS5hZGRDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgIH07XG4gICAgY29uc3QgYXV0b0V4cGFuZCA9ICh0aGF0LCBicm93c2VQYXRoLCAkdHJlZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGV4cGFuZCB0aGUgdHJlZSB0byBzaG93IHRoZSBub2RlSWRcbiAgICAgICAgbGV0ICRjdXJyZW50ID0gJHRyZWUuY2hpbGRyZW4oXCI6Zmlyc3RcIik7XG4gICAgICAgIGJyb3dzZVBhdGgucmVsYXRpdmVQYXRoLmVsZW1lbnRzIHx8IFtdO1xuICAgICAgICBjb25zdCBub2RlSWRzID0gYnJvd3NlUGF0aC5ub2RlSWRzIHx8IFtdO1xuICAgICAgICBpZiAobm9kZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZUlkcykge1xuICAgICAgICAgICAgaWYgKCRjdXJyZW50Lmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZXhwYW5kIGFuZCBzZWxlY3QgdGhlIHJpZ2h0IGVsZW1lbnRcbiAgICAgICAgICAgICAgICB5aWVsZCBfZXhwYW5kTGkodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBmaW5kRWxlbWVudChuLCAkY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoJGVsZW1lbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGN1cnJlbnQgPSAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RTaW5nbGUodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICBzY3JvbGxUb0xpKHRoYXQuJGRyb3Bkb3duLCAkY3VycmVudCk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gc2Nyb2xsVG9MaSgkY29udGFpbmVyLCAkdGFyZ2V0TGkpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0IGl0ZW0gcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBsaVBvcyA9ICR0YXJnZXRMaS5wb3NpdGlvbigpLnRvcDtcbiAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclNjcm9sbFRvcCA9ICRjb250YWluZXIuc2Nyb2xsVG9wKCk7XG4gICAgICAgIGlmIChjb250YWluZXJTY3JvbGxUb3AgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiB0byBzY3JvbGwgdG8gKGN1cnJlbnQgc2Nyb2xsICsgaXRlbSdzIHBvc2l0aW9uKVxuICAgICAgICAvLyBBZGp1c3QgdGhpcyBjYWxjdWxhdGlvbiBiYXNlZCBvbiB5b3VyIG5lZWRzXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvID0gY29udGFpbmVyU2Nyb2xsVG9wICsgbGlQb3MgLSAkY29udGFpbmVyLmhlaWdodCgpIC8gMiArICR0YXJnZXRMaS5oZWlnaHQoKSAvIDI7XG4gICAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIGVuc3VyZSB0aGUgaXRlbSBpcyB2aXNpYmxlXG4gICAgICAgICRjb250YWluZXIuYW5pbWF0ZSh7XG4gICAgICAgICAgICBzY3JvbGxUb3A6IHNjcm9sbFRvLFxuICAgICAgICB9LCA1MDApOyAvLyBBZGp1c3QgdGhlIGR1cmF0aW9uICg1MDBtcykgYXMgbmVlZGVkXG4gICAgfVxuICAgIGNvbnN0IHJlYWNoU2VsZWN0aW9uID0gKHRoYXQsIHBhcmVudE5vZGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBub2RlSWQgPSB0aGF0LiRpbnB1dC52YWwoKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIHJvb3ROb2RlSWQ6IHBhcmVudE5vZGUubm9kZUlkLFxuICAgICAgICAgICAgaXNUeXBlOiB0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmIHx8IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgIGNvbnN0IGJyb3dzZVBhdGggPSB5aWVsZCB3YWxrQmFja3dhcmQoZGF0YSwgb3B0aW9ucyk7XG4gICAgICAgIGlmICghYnJvd3NlUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIGF1dG9FeHBhbmQodGhhdCwgYnJvd3NlUGF0aCwgdGhhdC4kdHJlZSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gc29ydCByZWZlcmVuY2UgICBieSBicm93c2VOYW1lXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlcy5zb3J0KChhLCBiKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoKChfYSA9IGEuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hbWUpIHx8IFwiXCIpLmxvY2FsZUNvbXBhcmUoKChfYiA9IGIuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IFwiXCIpOyB9KTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuZmlsdGVyICYmICF0aGF0Lm9wdGlvbnMuZmlsdGVyKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoYDxsaT5lcnJvciAke2Vyci5tZXNzYWdlfTwvbGk+YCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmZpbmQoXCIuc3Bpbm5lclwiKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICRub2RlLnJlbW92ZUNsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1ha2VDb25uZWN0aW9uKHRoYXQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9leHBhbmRMaSh0aGF0LCAkbGkpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgIGNvbnN0IGYgPSAhdGhhdC5vcHRpb25zLmlzVHlwZVJlZiA/IGZldGNoQ2hpbGRyZW4gOiBmZXRjaFN1YnR5cGVzO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB5aWVsZCBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbGksIGYsIGRhdGEpO1xuICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRQYXJlbnROb2RlID0ge1xuICAgICAgICBicm93c2VOYW1lOiB7IG5hbWVzcGFjZUluZGV4OiAwLCBuYW1lOiBcIk9iamVjdHNcIiB9LFxuICAgICAgICBub2RlQ2xhc3M6IFwiT2JqZWN0XCIsXG4gICAgICAgIG5vZGVJZDogXCJucz0wO2k9ODVcIixcbiAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgdHlwZURlZmluaXRpb246IEZvbGRlclR5cGUsXG4gICAgfTtcbiAgICBjb25zdCBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbIFRlbXBlcmF0dXJlICBdXG4gICAgICAgICAqICAgKCB0b29sdGlwIDogKC9PYmplY3RzL015U2Vuc29yKSAobnM9MTtzPVRlbXBlcmF0dXJlKSlcbiAgICAgICAgICogWyArIFtGb2xkZXJdIE9iamVjdHNdXG4gICAgICAgICAqIFsgICAgIFtPYmplY3RdIE15U2Vuc29yXVxuICAgICAgICAgKiBbICAgICAoICkgW1ZhcmlhYmxlXSBUZW1wZXJhdHVyZV1cbiAgICAgICAgICovXG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubm9kZUJyb3dzZXJcIiwge1xuICAgICAgICAgICAgLyogZGVmYXVsdCBvcHRpb25zICovXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiAoKSA9PiAoeyBlbmRwb2ludDogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0M1wiIH0pLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gZGVmYXVsdFBhcmVudE5vZGUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICAgICAgaXNUeXBlUmVmOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuX19wYXJlbnROb2RlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUuY2FsbCh0aGF0KSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IHlpZWxkIGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBkZXNjO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGF0Ll9fcGFyZW50Tm9kZSB8fCBkZWZhdWx0UGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyByZXNldCBwYXJlbnQgbm9kZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdGhhdDtcbiAgICAgICAgICAgICAgICAgICAgYS5fX3BhcmVudE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHlpZWxkIHRoaXMucmVzb2x2ZVBhcmVudE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LmN1cnJlbnRQYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmlmeShtb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCBtb2RlLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbykudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwiaW5wdXQtZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5yZW1vdmVDbGFzcyhcImlucHV0LWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2hpZGVNZW51KG1lbnUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtY2xvc2UtcHJvcGVydHktc2VsZWN0XCIpO1xuICAgICAgICAgICAgICAgIG1lbnUuaGlkZSgpO1xuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAobWVudS5vcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBtZW51LmZpbmQoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykucHJvcChcImNoZWNrZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC5wdXNoKCQodGhpcykuZGF0YShcInZhbHVlXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuY2FsbGJhY2soc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhhdC4kZWxlbWVudERpdi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgLy94eCB9IGVsc2UgaWYgKHRoaXMuJG9wdGlvblNlbGVjdFRyaWdnZXIuaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAvL3h4ICAgICB0aGF0LiRvcHRpb25TZWxlY3RUcmlnZ2VyLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlTWVudShtZW51T3B0aW9ucywgb3B0cywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVudSA9ICQoXCI8ZGl2PlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLXR5cGVkSW5wdXQtb3B0aW9ucyBzdGVyZml2ZS1vbmxpbmUtbWVudVwiKTtcbiAgICAgICAgICAgICAgICBtZW51Lm9wdHMgPSBvcHRzO1xuICAgICAgICAgICAgICAgIG1lbnUuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgICAgICAgICAgICBtZW51T3B0aW9ucy5mb3JFYWNoKChvcHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdCA9IHsgdmFsdWU6IG9wdCwgbGFiZWw6IG9wdCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcCA9ICQoJzxhIGhyZWY9XCIjXCI+PC9hPicpLmF0dHIoXCJ2YWx1ZVwiLCBvcHQudmFsdWUpLmFwcGVuZFRvKG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC50ZXh0KG9wdC5sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AucHJvcChcInRpdGxlXCIsIG9wdC50aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0Lmljb24uaW5kZXhPZihcIjxcIikgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG9wdC5pY29uKS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0Lmljb24uaW5kZXhPZihcIi9cIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIjxpPlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBcInJlZC11aS10eXBlZElucHV0LWljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IFwibWFzay1pbWFnZTogdXJsKFwiICsgb3B0Lmljb24gKyBcIik7IC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiICsgb3B0Lmljb24gKyBcIik7XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCI8aT5cIiwgeyBjbGFzczogXCJyZWQtdWktdHlwZWRJbnB1dC1pY29uIFwiICsgb3B0Lmljb24gfSkucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLmNzcyh7IHBhZGRpbmdMZWZ0OiBcIjE4cHhcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdC5pY29uICYmICFvcHQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnRleHQob3B0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgY2I7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYiA9ICQoJzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoXCJwb2ludGVyLWV2ZW50c1wiLCBcIm5vbmVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YShcInZhbHVlXCIsIG9wdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlcGVuZFRvKG9wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcIm1vdXNlZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3B0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiLnByb3AoXCJjaGVja2VkXCIsICFjYi5wcm9wKFwiY2hlY2tlZFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5vbihcImtleWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERPV05cbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2hpbGRyZW4oXCI6Zm9jdXNcIikubmV4dCgpLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldnQua2V5Q29kZSA9PT0gMzgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVVBcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2hpbGRyZW4oXCI6Zm9jdXNcIikucHJldigpLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldnQua2V5Q29kZSA9PT0gMjcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTQ0FQRVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzYXJtQ2xpY2s6IGZhbHNlLFxuICAgICAgICAgICAgX3Nob3dNZW51KG1lbnUsIHJlbGF0aXZlVG8pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXNhcm1DbGljaykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FybUNsaWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBwb3MgPSByZWxhdGl2ZVRvLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSByZWxhdGl2ZVRvLmhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHZhciBtZW51SGVpZ2h0ID0gbWVudS5oZWlnaHQoKTtcbiAgICAgICAgICAgICAgICB2YXIgdG9wID0gaGVpZ2h0ICsgcG9zLnRvcDtcbiAgICAgICAgICAgICAgICBpZiAodG9wICsgbWVudUhlaWdodCAtICQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpID4gJCh3aW5kb3cpLmhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcCAtPSB0b3AgKyBtZW51SGVpZ2h0IC0gJCh3aW5kb3cpLmhlaWdodCgpICsgNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRvcCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5oZWlnaHQobWVudUhlaWdodCArIHRvcCk7XG4gICAgICAgICAgICAgICAgICAgIHRvcCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiB0b3AgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IHBvcy5sZWZ0ICsgXCJweFwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUuc2xpZGVEb3duKDEwMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsYXkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1jbG9zZS1wcm9wZXJ0eS1zZWxlY3RcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KG1lbnUpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHJlbGF0aXZlVG8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuZGlzYXJtQ2xpY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9zaG93VHlwZU1lbnUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd01lbnUodGhhdC4kbWVudSwgdGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdGhhdC5zZWxlY3RlZE1lbnVJdGVtO1xuICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9IHRoYXQuJG1lbnUuZmluZChcIlt2YWx1ZT0nXCIgKyB0eXBlICsgXCInXCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfSwgMTIwKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfaW5pdE1lbnUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5hdHRyKFwidGFiaW5kZXhcIiwgLTEpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIub24oXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtZm9jdXMtYmxvY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodGhhdC4kbWVudSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRtZW51LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBmYS1pZC1jYXJkXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZUxpc3QgPSBbXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwidGV4dFwiLCB2YWx1ZTogXCJ0XCIsIHRpdGxlOiBcIlZhbHVlIGlzIG5vdCB2ZXJpZmllZFwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1mb250XCIvaT4gJyB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJtc2cuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJtc2dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIm5vZGUgaWQgb3IgIGJyb3dzZSBwYXRoIGNvbWVzIGZyb20gaW5qZWN0ZWQgbXNnIHBhcmFtZXRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUtb3Blbi1vXCIvPicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiTm9kZUlkXCIsIHZhbHVlOiBcIm5cIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtdGFnXCIvPjEgJm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJBbGlhc2VkIE5vZGVJZFwiLCB2YWx1ZTogXCJuYVwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1ib29rbWFya1wiLz4mbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIk5vZGVJZCB3aXRoIG5hbWVzcGFjZSBVcm5cIiwgdmFsdWU6IFwibnN1XCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWlkLWNhcmRcIi8+Jm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJCcm93c2VQYXRoXCIsIHZhbHVlOiBcImJcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtdGFnXCIvPjxpIGNsYXNzPVwiZmEgZmEtZmlnaHRlci1qZXRcIi8+Jm5ic3A7JyB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJBbGlhc2VkIEJyb3dzZSBQYXRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJhYlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtYm9va21hcmtcIi8+PGkgY2xhc3M9XCJmYSBmYS1maWdodGVyLWpldFwiLz4mbmJzcDsnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGZpZ3VyZU91dE1lblVJdGVtVmFsdWUodGhhdC4kaW5wdXQudmFsKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0eXBlTGlzdC5maW5kKCh4KSA9PiB4LnZhbHVlID09PSBhKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbC5lbXB0eSgpLmFwcGVuZChgPHNwYW4gdGl0bGU9JHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnRpdGxlKSB8fCBcIlwifT4mbmJzcDsgJHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLmljb24pIHx8IFwiXCJ9PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IGE7XG4gICAgICAgICAgICAgICAgY29uc3QgdHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUgPSB0aGlzLl9jcmVhdGVNZW51KHR5cGVMaXN0LCB7fSwgKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IHRvTW9kZSh2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIE1lbnUgc2VsZWN0ZWQgIVxuICAgICAgICAgICAgICAgICAgICAgICAgdHQudmVyaWZ5KG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0eXBlTGlzdC5maW5kKCh4KSA9PiB4LnZhbHVlID09PSB2KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5zZWxlY3RlZE1lbnVJdGVtID0gdjtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0TGFiZWwuZW1wdHkoKS5hcHBlbmQoYDxzcGFuIHRpdGxlPSR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS50aXRsZSkgfHwgXCJcIn0+Jm5ic3A7ICR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5pY29uKSB8fCBcIlwifTwvc3Bhbj5gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51LmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIuc2hvdygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vZGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTW9kZSh0aGF0LnNlbGVjdGVkTWVudUl0ZW0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldE1vZGUobW9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBmcm9tTW9kZShtb2RlKTtcbiAgICAgICAgICAgICAgICB0aGF0LnNlbGVjdGVkTWVudUl0ZW0gPSBzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuY3NzKFwiYm9yZGVyXCIsIFwibm9uZVwiKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnREaXYgPSB0aGF0LiRpbnB1dC53cmFwKFwiPGRpdj5cIikucGFyZW50KCkuYWRkQ2xhc3MoXCJtYWluLXdyYXBwZXJcIik7XG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBDb21ibyBicm93c2VyXG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8gPSAkKFwiPGRpdi8+XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwic3RlcmZpdmUtY29tYm8tYm94XCIpO1xuICAgICAgICAgICAgICAgIC8vIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtaW5wdXQtd3JhcFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIGFkZCBidXR0b24gb24gdGhlIHJpZ2h0IHNpZGVcbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHRvZ2dsZVRyZWVCdG5cbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuID0gJChgPGJ1dHRvbiB0aXRsZT1cIm9wZW4gT1BDVUEgQWRkcmVzc1NwYWNlIEJyb3dzZXJcIj48aSBjbGFzcz1cImZhIGZhLXNpdGVtYXBcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYWZ0ZXIodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGRyb3Bkb3duLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmVlIHdpZGdldCBpcyBnb2luZyB0byBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSB5aWVsZCB0aGF0LnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT09IHRoYXQuY3VycmVudFBhcmVudCB8fCAoKF9hID0gdGhhdC5jdXJyZW50UGFyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZUlkKSAhPT0gcGFyZW50Tm9kZS5ub2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhhdC5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb1JlYWNoU2VsZWN0aW9uICYmICh5aWVsZCByZWFjaFNlbGVjdGlvbih0aGF0LCBwYXJlbnROb2RlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHZlcmlmeUJ0blxuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24gdGl0bGU9XCJ2ZXJpZnkgbm9kZUlkIG9yIGJyb3dzZVBhdGhcIj48aSBjbGFzcz1cImZhIGZhLXJlZnJlc2hcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYWZ0ZXIodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSB0aGF0Lm1vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkobW9kZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVJbnB1dCA9IChpbnB1dCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGUgPSB0aGF0Lm1vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uRGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEsIGpzb24gfSA9IHlpZWxkIF9jYWxsQ2hlY2tOb2RlSWQoY29ubmVjdGlvbkRhdGEsIGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZUlkID0gY2hvb3NlTm9kZUlkKGpzb24sIG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudmFsKHNlbGVjdGVkTm9kZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIHByZXBlbmRlZCBidXR0b25cbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0ID0gJChcIjxkaXY+XCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5iZWZvcmUodGhhdC4kdWlTZWxlY3QpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyID0gJCgnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCI+PC9idXR0b24+JykucHJlcGVuZFRvKHRoYXQuJHVpU2VsZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgJCgnPGkgY2xhc3M9XCJyZWQtdWktdHlwZWRJbnB1dC1pY29uIGZhIGZhLWNhcmV0LWRvd25cIj48L2k+JykudG9nZ2xlKHRydWUpLmFwcGVuZFRvKHRoYXQuJHNlbGVjdFRyaWdnZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zaG93VHlwZU1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImtleWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zaG93VHlwZU1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImZvY3VzXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0LmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAub24oXCJibHVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhciBvcHQgPSB0aGF0LnR5cGVNYXBbdGhhdC5wcm9wZXJ0eVR5cGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKG9wdC5oYXNWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0LnJlbW92ZUNsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbCA9ICQoJzxzcGFuIGNsYXNzPVwicmVkLXVpLXR5cGVkSW5wdXQtdHlwZS1sYWJlbFwiPjwvc3Bhbj4nKS5hcHBlbmRUbyh0aGF0LiRzZWxlY3RUcmlnZ2VyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdE1lbnUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIiwgXCJlbnRlciBhIG5vZGVJZCBvciBhIGJyb3dzZVBhdGggXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHRlbXBvcmF0eSBpbmZvIHBhbmVsXG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mbyA9ICQoYDxkaXYgY2xhc3M9XCJpbmZvLXRleHRcIj48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gZHJvcCBkb3duIHRyZWVcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS1kcm9wZG93blwiKS5oaWRlKCkuYXBwZW5kVG8odGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUgPSAkKGA8dWwgY2xhc3M9XCJzdGVyZml2ZS10cmVlXCI+PC91bD5gKS5hcHBlbmRUbyh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgLy8gdGhhdC4kZHJvcGRvd24uc2hvdygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgY29uc3QgaXNPbkxlZnRTaXplID0gKCRsaSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkbGkub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVFeHBhbnNpb24gPSAoJGxpKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfZXhwYW5kTGkodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImRibGNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgaW5wdXQgPSBgWyR7ZGlzcGxheU5hbWV9XSgke3ZhbHVlfSlgO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGUgPSB0aGF0Lm1vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSBcIm5vZGVJZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuc2V0TW9kZShtb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUlucHV0KHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnZhbChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHJldHVybnMgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgY29udGFpbmluZzpcbiAgICAgKiAgLSB0aGUgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksXG4gICAgICogIC0gdXNlcklkZW50aXR5VHlwZSxcbiAgICAgKiAgLSBjcmVkZW50aWFsc1xuICAgICAqICAtIG5hbWVzcGFjZUFsaWFzZXNcbiAgICAgKlxuICAgICAqIGV4dHJhY3RlZCBmcm9tIHRoZSB1aSB3aWRnZXQgI25vZGUtaW5wdXQtZW5kcG9pbnRcbiAgICAgKi9cbiAgICBjb25zdCBnZXRFbmRQb2ludEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgcmVkTm9kZSA9IFJFRC5ub2Rlcy5ub2RlKGVuZHBvaW50SWQpO1xuICAgICAgICBpZiAoIXJlZE5vZGUpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvLyBjb25zdCBjcmVkZW50aWFscyA9IFJFRC4oZW5kcG9pbnRJZCk7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gc2FuaXRpemUgYW5kIGV4dHJhY3QgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgb25seSAoIG5vdCB0aGUgbm9kZS1yZWQgc3R1ZmYpXG4gICAgICAgIGNvbnN0IHsgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksIHVzZXJJZGVudGl0eVR5cGUsIGNyZWRlbnRpYWxzLCBuYW1lc3BhY2VBbGlhc2VzIH0gPSByZWROb2RlO1xuICAgICAgICBjb25zdCByZXRWYWx1ZSA9IHtcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgc2VjdXJpdHlNb2RlLFxuICAgICAgICAgICAgc2VjdXJpdHlQb2xpY3ksXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgICAgICBuYW1lc3BhY2VBbGlhc2VzLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0VmFsdWU7XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnROciA9IGdldEVuZFBvaW50QXR0cmlidXRlcygpO1xuICAgICAgICBpZiAoIWVuZHBvaW50TnIpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZXNwYWNlQWxpYXNlcyA9IGVuZHBvaW50TnIubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oeyBuYW1lc3BhY2VBbGlhc2VzLCBpZDogZW5kcG9pbnRJZCB9LCBlbmRwb2ludE5yKTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IGdldEVuZHBvaW50UGFyYW1ldGVycyxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUNsaWVudDItRXh0ZW5zaW9uT2JqZWN0XCIsIHtcbiAgICAgICAgY2F0ZWdvcnk6IFwib3BjdWFcIixcbiAgICAgICAgY29sb3I6IFwiI0MwREVFRFwiLFxuICAgICAgICBhbGlnbjogXCJyaWdodFwiLFxuICAgICAgICBpY29uOiBcIi4uLy4uL2ljb25zL29wY3Vhbm9kZUxvZ28ucG5nXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJleHRlbnNpb24gb2JqZWN0XCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIGRhdGFUeXBlOiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBpbnB1dHM6IDEsXG4gICAgICAgIG91dHB1dHM6IDEsXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBIENsaWVudCBFeHRlbnNpb24gT2JqZWN0XCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IDE7XG4gICAgICAgICAgICBjb25zdCAkZGF0YVR5cGUgPSAkKFwiI25vZGUtaW5wdXQtZGF0YVR5cGVcIik7XG4gICAgICAgICAgICBjb25zdCByZWZlcmVuY2VzTm9kZURlc2MgPSB7XG4gICAgICAgICAgICAgICAgbm9kZUlkOiBcImk9MjJcIixcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJTdHJ1Y3R1cmVcIiB9LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiU3RydWN0dXJlXCIgfSxcbiAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiRGF0YVR5cGVcIixcbiAgICAgICAgICAgICAgICB0eXBlRGVmaW5pdGlvbjogXCJpPTBcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAkZGF0YVR5cGUubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IHBhcmVudE5vZGU6ICgpID0+IHJlZmVyZW5jZXNOb2RlRGVzYywgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgICAgICAgICB9LCBpc1R5cGVSZWY6IHRydWUgfSkpO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkgeyB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
7
|
+
function _0x3f6b(_0x41676c,_0x488da5){const _0xa44e2d=_0xa44e();return _0x3f6b=function(_0x3f6bc9,_0x3103fb){_0x3f6bc9=_0x3f6bc9-0xbe;let _0xcd423a=_0xa44e2d[_0x3f6bc9];return _0xcd423a;},_0x3f6b(_0x41676c,_0x488da5);}function _0xa44e(){const _0x1217f0=['grey','animate','$dropdown',');\x20-webkit-mask-image:\x20url(','ns=0;i=47','2313cUtcCp','18px','<i\x20class=\x22fa\x20fa-id-card\x22/> \x20','860139SRQFNO','appendTo','nodeIds','change','red-ui-typedInput-icon\x20','ns=0;i=46','throw','CadetBlue','opcua','</span><ul></ul></li>','mousedown.red-ui-typedInput-close-property-select','OpcUa-Endpoint2','828750EsbGpr','icon','border','parent','HasSubtype','90174Toxnch','status','#node-input-dataType','callback','_initMenu','options','endpoint','opc.tcp://opcuademo.sterfive.com:26543','[value=\x27','aliasedNodeId','done','find','namespaceAliases','join','failure','DarkOrange','_createMenu','offset','tabindex','ObjectType','mousedown.red-ui-typedInput-focus-block','fa-text-width','SteelBlue','Invalid','sterfive-dropdown','input[type=\x22checkbox\x22]','val','$elementDiv','text','browse\x20path:\x20','\x22}><span\x20class=\x22tree-text\x22\x20title=','!!failure!!','attr','prependTo','top','NodeId\x20with\x20namespace\x20Urn','Object','selected','closest','widget','> \x20','<a\x20href=\x22#\x22></a>','statusText','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','toString','nodeClass','$uiSelect','click','mode','ns=0;i=61','ns=0;i=40','assign','$toggleTreeBtn','node\x20class:\x20','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','append','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','value','i=22','before','toggleClass','BrowseName','input-error','Inverse',':focus','expandable','sterfive-typedInput-options\x20sterfive-online-menu','$verifyBtn','ns=0;i=85','$selectTrigger','1696LiFmHn','12UdEPnp','msg.','><i\x20class=\x22fa\x20','li[key=\x22','Aliased\x20NodeId','then','ns=0;i=35','remove','target','inputs','/opcua-for-node-red','verify','preventDefault','<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','70WjZWAY','fa-folder','isSelectable','nsuNodeID','height','_showTypeMenu','fa-sliders','#C0DEED','HasChild','toggle','Value\x20is\x20not\x20verified','stopPropagation','nodeId','reset','11955372OymcRg','right','prop','placeholder','multiple','fetching\x20failed\x20with\x20error','aliasedBrowsePath','TypeDefinition','IsForward','View','disarmClick','$menu','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','relativePath','Forward','pageY','parentNode','fa-object-group','<li\x20key=\x22','_hideMenu','function','Both','Variable','currentParent','focus','POST','nodeId_nsu','DataType','DodgerBlue','statusCode','OPCUA\x20Client\x20Extension\x20Object','<i\x20class=\x22fa\x20fa-bookmark\x22/> \x20','hasClass','Organizes','wrap','expanded','push','_showMenu','$selectLabel','data','</span>','label','title','<span\x20title=','<div\x20class=\x22info-text\x22></div>','<div/>','#node-input-endpoint','<li>error\x20','Unspecified',';\x22></i>\x20','match','<div\x20class=\x22spinner\x22></div>','references',':visible','removeClass','Method','Good','../../icons/opcuanodeLogo.png','ReferenceType','message','referenceTypeId','left','suppressed','node_label_italic','fetched','$combo','displayName','fa-cog','prev','<div>','nsu','HasTypeDefinition','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','$input','show','loading','name','Objects','$tree','pageX','NodeClass','reference','empty','opts','__parentNode','stringify','slideDown','sterfive.nodeBrowser','extension\x20object','red-ui-typedInput-icon','input-group','json','trigger','endpointNode','browsePath','forEach','$info','fa-list-alt','resolveParentNode','_delay','isTypeRef','registerType','sterfive-combo-box','requestedNodeId','checked','rgba(61,\x2060,\x204,\x200.525)','keyCode','filter','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','children','keydown','next','mousedown','css','statusCode:\x20','red-ui-typedInput-focus','application/json','each','hide','localeCompare','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','.spinner','nsu\x20nodeId:\x20','<ul\x20class=\x22sterfive-tree\x22></ul>','typeDefinition','18704yJZFNv','i=0','browseResult','length','ns=0;i=34','bp_indexed','log','VariableType','baseUrl','addClass','250VJomnz','/checkNodeId','HasProperty','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','SuppressedError','10zOdVks','DisplayName','setMode','nodes','indexOf','980870OzlLda','aliased\x20browsePath:\x20','selectedMenuItem','main-wrapper','sort','already\x20fetched','pointer-events','expandable\x20expanded','<input\x20type=\x22checkbox\x22>','i=61','string','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','apply','NodeId','browseName','SandyBrown','msg','node','SeaGreen','error','call','scrollTop','nodeId_aliased','aliased\x20NodeId:\x20','/browse','replaceWith','bp_aliased','$inputGroup','none'];_0xa44e=function(){return _0x1217f0;};return _0xa44e();}(function(_0x298c92,_0x908db4){const _0x44a7ee=_0x3f6b,_0x1f9680=_0x298c92();while(!![]){try{const _0x5264f2=-parseInt(_0x44a7ee(0x12a))/0x1*(parseInt(_0x44a7ee(0x1b0))/0x2)+parseInt(_0x44a7ee(0x165))/0x3*(parseInt(_0x44a7ee(0x1b1))/0x4)+-parseInt(_0x44a7ee(0x12f))/0x5*(parseInt(_0x44a7ee(0x16a))/0x6)+parseInt(_0x44a7ee(0x159))/0x7+-parseInt(_0x44a7ee(0x120))/0x8*(parseInt(_0x44a7ee(0x156))/0x9)+-parseInt(_0x44a7ee(0x1bf))/0xa*(parseInt(_0x44a7ee(0x134))/0xb)+parseInt(_0x44a7ee(0x1cd))/0xc;if(_0x5264f2===_0x908db4)break;else _0x1f9680['push'](_0x1f9680['shift']());}catch(_0x405394){_0x1f9680['push'](_0x1f9680['shift']());}}}(_0xa44e,0x7561a),(function(){'use strict';const _0x4663d1=_0x3f6b;function _0x45c993(_0x436728,_0x2fa170,_0x17bd61,_0x56d789){function _0x2822a7(_0x4a4a7c){return _0x4a4a7c instanceof _0x17bd61?_0x4a4a7c:new _0x17bd61(function(_0xa25c26){_0xa25c26(_0x4a4a7c);});}return new(_0x17bd61||(_0x17bd61=Promise))(function(_0x4e09c8,_0x55a85a){const _0x1eaa14=_0x3f6b;function _0x21360c(_0x3df746){try{_0x328670(_0x56d789['next'](_0x3df746));}catch(_0x4080dd){_0x55a85a(_0x4080dd);}}function _0x29a4f3(_0x4f2580){const _0x3951da=_0x3f6b;try{_0x328670(_0x56d789[_0x3951da(0x15f)](_0x4f2580));}catch(_0x4daed0){_0x55a85a(_0x4daed0);}}function _0x328670(_0x374eb9){const _0x597f3a=_0x3f6b;_0x374eb9[_0x597f3a(0x174)]?_0x4e09c8(_0x374eb9['value']):_0x2822a7(_0x374eb9['value'])['then'](_0x21360c,_0x29a4f3);}_0x328670((_0x56d789=_0x56d789[_0x1eaa14(0x140)](_0x436728,_0x2fa170||[]))[_0x1eaa14(0x112)]());});}typeof SuppressedError===_0x4663d1(0x1e1)?SuppressedError:function(_0x373678,_0x3d3a67,_0x5b8d45){const _0x5c002c=_0x4663d1;var _0x49ebca=new Error(_0x5b8d45);return _0x49ebca[_0x5c002c(0xef)]=_0x5c002c(0x12e),_0x49ebca[_0x5c002c(0x147)]=_0x373678,_0x49ebca[_0x5c002c(0xe1)]=_0x3d3a67,_0x49ebca;};const _0x5cbb22=_0x4663d1(0x1b7),_0x202694=_0x4663d1(0x19b),_0x4c0234=_0x4663d1(0x155),_0x4f7c10=_0x4663d1(0x15e),_0x2ed1ae=_0x4663d1(0x124),_0xe7454b='ns=0;i=45',_0x17918e=_0x4663d1(0x19c);var _0x1008c5;(function(_0x4598d8){const _0x5ec65a=_0x4663d1;_0x4598d8[_0x4598d8[_0x5ec65a(0x1db)]=0x0]=_0x5ec65a(0x1db),_0x4598d8[_0x4598d8['Inverse']=0x1]=_0x5ec65a(0x1a9),_0x4598d8[_0x4598d8[_0x5ec65a(0x1e2)]=0x2]=_0x5ec65a(0x1e2),_0x4598d8[_0x4598d8[_0x5ec65a(0x181)]=0x3]=_0x5ec65a(0x181);}(_0x1008c5||(_0x1008c5={})));var _0x5d9854;(function(_0x8e5eda){const _0x274c29=_0x4663d1;_0x8e5eda[_0x8e5eda[_0x274c29(0xd3)]=0x0]=_0x274c29(0xd3),_0x8e5eda[_0x8e5eda[_0x274c29(0x18e)]=0x1]='Object',_0x8e5eda[_0x8e5eda[_0x274c29(0x1e3)]=0x2]=_0x274c29(0x1e3),_0x8e5eda[_0x8e5eda[_0x274c29(0xda)]=0x4]=_0x274c29(0xda),_0x8e5eda[_0x8e5eda['ObjectType']=0x8]='ObjectType',_0x8e5eda[_0x8e5eda[_0x274c29(0x127)]=0x10]=_0x274c29(0x127),_0x8e5eda[_0x8e5eda[_0x274c29(0xdd)]=0x20]='ReferenceType',_0x8e5eda[_0x8e5eda[_0x274c29(0xbe)]=0x40]='DataType',_0x8e5eda[_0x8e5eda[_0x274c29(0x1d6)]=0x80]='View';}(_0x5d9854||(_0x5d9854={})));var _0x1222f0;(function(_0x4fc86a){const _0x8dc82b=_0x4663d1;_0x4fc86a[_0x4fc86a[_0x8dc82b(0x18e)]=0x1]=_0x8dc82b(0x18e),_0x4fc86a[_0x4fc86a[_0x8dc82b(0x1e3)]=0x2]=_0x8dc82b(0x1e3),_0x4fc86a[_0x4fc86a[_0x8dc82b(0xda)]=0x4]='Method',_0x4fc86a[_0x4fc86a['ObjectType']=0x8]=_0x8dc82b(0x17d),_0x4fc86a[_0x4fc86a[_0x8dc82b(0x127)]=0x10]=_0x8dc82b(0x127),_0x4fc86a[_0x4fc86a[_0x8dc82b(0xdd)]=0x20]=_0x8dc82b(0xdd),_0x4fc86a[_0x4fc86a[_0x8dc82b(0xbe)]=0x40]=_0x8dc82b(0xbe),_0x4fc86a[_0x4fc86a[_0x8dc82b(0x1d6)]=0x80]=_0x8dc82b(0x1d6);}(_0x1222f0||(_0x1222f0={})));var _0x4086d8;(function(_0x58d16d){const _0x598fa6=_0x4663d1;_0x58d16d[_0x58d16d[_0x598fa6(0xdd)]=0x1]=_0x598fa6(0xdd),_0x58d16d[_0x58d16d[_0x598fa6(0x1d5)]=0x2]='IsForward',_0x58d16d[_0x58d16d[_0x598fa6(0xf3)]=0x4]=_0x598fa6(0xf3),_0x58d16d[_0x58d16d[_0x598fa6(0x1a7)]=0x8]=_0x598fa6(0x1a7),_0x58d16d[_0x58d16d['DisplayName']=0x10]=_0x598fa6(0x130),_0x58d16d[_0x58d16d[_0x598fa6(0x1d4)]=0x20]=_0x598fa6(0x1d4);}(_0x4086d8||(_0x4086d8={})));function _0xfcdd9c(_0x474388){const _0x13c681=_0x4663d1;switch(_0x474388){case _0x13c681(0xc4):return _0x5cbb22;case _0x13c681(0x12c):return _0x4f7c10;case'HasComponent':return _0x4c0234;case _0x13c681(0x1c7):return _0x2ed1ae;case'HasSubtype':return _0xe7454b;case _0x13c681(0xea):return _0x17918e;}}const _0x7855ec=_0x599a65=>{const _0x28cf89=_0x4663d1;switch(_0x599a65[_0x28cf89(0x197)]){case'Object':if(_0x599a65['referenceTypeId']===_0x5cbb22);if(_0x599a65[_0x28cf89(0x11f)]===_0x202694||_0x599a65[_0x28cf89(0xdf)]===_0x28cf89(0x13d))return{'icon':_0x28cf89(0x1c0),'color':_0x28cf89(0x10c)};return{'icon':'fa-object-group','color':_0x28cf89(0x146)};case'Variable':if(_0x599a65[_0x28cf89(0xdf)]===_0x4c0234)return{'icon':_0x28cf89(0x104),'color':_0x28cf89(0x180)};else return _0x599a65[_0x28cf89(0xdf)]===_0x4f7c10?{'icon':_0x28cf89(0x104),'color':_0x28cf89(0xbf)}:{'icon':_0x28cf89(0x104),'color':_0x28cf89(0x160)};case _0x28cf89(0xda):return{'icon':_0x28cf89(0xe6),'color':_0x28cf89(0x143)};case'ObjectType':return{'icon':_0x28cf89(0x1de),'color':'DarkOrange'};case _0x28cf89(0x127):return{'icon':_0x28cf89(0x1c5),'color':_0x28cf89(0x179)};case'DataType':return{'icon':_0x28cf89(0x17f),'color':_0x28cf89(0x160)};}return{'icon':'fa-question','color':_0x28cf89(0x151)};},_0x1dd89b=(_0x117052,_0x87cbd9,_0x2edfc3)=>_0x45c993(void 0x0,[_0x117052,_0x87cbd9,_0x2edfc3],void 0x0,function*({endpointNode:_0x3f9bcd,endpoint:_0x10ac9b,baseUrl:_0x562149},_0x3e97a9,_0x4e4b7a){const _0x4b6b9f=_0x4663d1,_0x4f8f38=_0x562149+_0x4b6b9f(0x1bb),_0x516ce6=_0x4f8f38+_0x4b6b9f(0x14c),_0x5993a0=Object[_0x4b6b9f(0x19d)](Object[_0x4b6b9f(0x19d)]({},_0x4e4b7a),{'nodeId':_0x3e97a9,'resultMask':0x3f}),_0x4f4f31=yield fetch(_0x516ce6,{'method':_0x4b6b9f(0x1e6),'body':JSON[_0x4b6b9f(0xf8)]({'endpointNode':_0x3f9bcd,'endpoint':_0x10ac9b,'browseDescription':_0x5993a0}),'headers':{'Content-Type':_0x4b6b9f(0x117)}});if(_0x4f4f31[_0x4b6b9f(0x16b)]!==0xc8)return console['log'](_0x4b6b9f(0x1d2),_0x4f4f31[_0x4b6b9f(0x16b)],_0x4f4f31[_0x4b6b9f(0x194)]),{'references':[]};const _0x2e32e4=yield _0x4f4f31[_0x4b6b9f(0xfe)](),_0x304847=_0x2e32e4[_0x4b6b9f(0x122)][_0x4b6b9f(0xd7)]||[];return{'references':_0x304847};}),_0x96ffea={'referenceTypeId':_0xfcdd9c(_0x4663d1(0x1c7)),'includeSubtypes':!![],'browseDirection':_0x1008c5['Forward'],'nodeClassMask':_0x5d9854[_0x4663d1(0x1e3)]|_0x5d9854['Object']|_0x5d9854['Method'],'resultMask':0x3f},_0x17c69c={'referenceTypeId':_0xfcdd9c('Organizes'),'includeSubtypes':!![],'browseDirection':_0x1008c5[_0x4663d1(0x1db)],'nodeClassMask':_0x5d9854[_0x4663d1(0x1e3)]|_0x5d9854[_0x4663d1(0x18e)]|_0x5d9854['Method'],'resultMask':0x3f},_0x478dc7=(_0x42eeb9,_0x51782e)=>_0x45c993(void 0x0,[_0x42eeb9,_0x51782e],void 0x0,function*({endpointNode:_0x152933,endpoint:_0x1b1e7a,baseUrl:_0x54bf44},{nodeId:_0x1d66fa,rootNodeId:_0x391113,isType:_0x17930b}){const _0x41eb33=_0x4663d1,_0x55633a=_0x54bf44+_0x41eb33(0x1bb),_0x19278e=_0x55633a+'/walk-backward',_0xbf66a=yield fetch(_0x19278e,{'method':'POST','body':JSON['stringify']({'endpointNode':_0x152933,'endpoint':_0x1b1e7a,'nodeId':_0x1d66fa,'rootNodeId':_0x391113,'isType':_0x17930b}),'headers':{'Content-Type':'application/json'}});if(_0xbf66a['status']!==0xc8)return null;const _0x4a5be1=yield _0xbf66a[_0x41eb33(0xfe)]();return _0x4a5be1['browsePath'];}),_0x4450fc=(_0x31a268,_0x716a0c)=>{const _0x3986c1=_0x4663d1;if(_0x31a268[_0x3986c1(0xc0)]!==_0x3986c1(0xdb))return _0x31a268[_0x3986c1(0x10a)];switch(_0x716a0c){case _0x3986c1(0x101):return _0x31a268[_0x3986c1(0x125)];case _0x3986c1(0x1d3):return _0x31a268['bp_aliased']||_0x31a268[_0x3986c1(0x125)];case _0x3986c1(0x173):return _0x31a268[_0x3986c1(0x14a)]||_0x31a268[_0x3986c1(0x1e7)];case _0x3986c1(0x1c2):return _0x31a268[_0x3986c1(0x1e7)];default:case _0x3986c1(0x1cb):return _0x31a268[_0x3986c1(0x1cb)];}},_0x16fa0d=_0x2eb606=>{const _0xd9fb2e=_0x4663d1;if(_0x2eb606[_0xd9fb2e(0xc0)]!==_0xd9fb2e(0xdb))return _0xd9fb2e(0x115)+_0x2eb606[_0xd9fb2e(0xc0)];else{let _0x1eee1d=[];return _0x1eee1d[_0xd9fb2e(0xc7)]('nodeId:\x20'+_0x2eb606['nodeId']),_0x1eee1d['push'](_0xd9fb2e(0x187)+_0x2eb606[_0xd9fb2e(0x125)]),_0x1eee1d['push'](_0xd9fb2e(0x19f)+_0x5d9854[_0x2eb606[_0xd9fb2e(0x197)]]),_0x2eb606[_0xd9fb2e(0x1e7)]&&_0x1eee1d[_0xd9fb2e(0xc7)](_0xd9fb2e(0x11d)+_0x2eb606['nodeId_nsu']),_0x2eb606['nodeId_aliased']&&_0x1eee1d[_0xd9fb2e(0xc7)](_0xd9fb2e(0x14b)+_0x2eb606[_0xd9fb2e(0x14a)]),_0x2eb606[_0xd9fb2e(0x125)]&&_0x1eee1d[_0xd9fb2e(0xc7)](_0xd9fb2e(0x135)+_0x2eb606[_0xd9fb2e(0x14e)]),_0x1eee1d[_0xd9fb2e(0x177)]('\x0a');}};function _0x4c7243(_0x305dd9){const _0x5762c6=_0x4663d1;if(_0x305dd9[_0x5762c6(0xd5)](/^nsu=/))return _0x5762c6(0x1c2);if(_0x305dd9[_0x5762c6(0xd5)](/^(ns=.*;)?(i|b|s|g)=/))return _0x5762c6(0x1cb);if(_0x305dd9[_0x5762c6(0xd5)](/^nsa=/))return _0x5762c6(0x173);if(_0x305dd9[_0x5762c6(0xd5)](/^(\/|\.)[0-9]+:/))return _0x5762c6(0x101);if(_0x305dd9['match'](/^(\/|\.).*:/))return _0x5762c6(0x101);}function _0x21177a(_0x1f4b90){const _0x1061d2=_0x4663d1,_0x216899=_0x4c7243(_0x1f4b90);switch(_0x216899){case _0x1061d2(0x1cb):return'n';case _0x1061d2(0x173):return'na';case _0x1061d2(0x1c2):return _0x1061d2(0xe9);case _0x1061d2(0x101):return'b';case _0x1061d2(0x1d3):return'ab';default:return't';}}function _0x1e0b4b(_0x3d6b53){const _0x2a3389=_0x4663d1;let _0x1ac96f;switch(_0x3d6b53){case'n':_0x1ac96f='nodeId';break;case'na':_0x1ac96f=_0x2a3389(0x173);break;case'nsu':_0x1ac96f=_0x2a3389(0x1c2);break;case'b':_0x1ac96f='browsePath';break;case'ab':_0x1ac96f=_0x2a3389(0x1d3);break;}return _0x1ac96f;}function _0x4e166f(_0x2b9cdd){const _0x5cfca2=_0x4663d1;switch(_0x2b9cdd){case _0x5cfca2(0x1cb):return'n';case _0x5cfca2(0x173):return'na';case _0x5cfca2(0x1c2):return _0x5cfca2(0xe9);case'browsePath':return'b';case _0x5cfca2(0x1d3):return'ab';default:return't';}}const _0x2b6124=(_0x2695bc,_0x314d46)=>_0x45c993(void 0x0,[_0x2695bc,_0x314d46],void 0x0,function*({endpointNode:_0x718a6a,endpoint:_0x414f94,baseUrl:_0x1ef304},_0x5d1487){const _0x56d7ed=_0x4663d1,_0x2bd693=_0x1ef304+_0x56d7ed(0x1bb),_0x1fe84f=_0x2bd693+_0x56d7ed(0x12b),_0x21493d=_0x718a6a['id'],_0x446463=RED[_0x56d7ed(0x132)][_0x56d7ed(0x145)](_0x21493d);console[_0x56d7ed(0x126)](_0x446463[_0x56d7ed(0x176)]),_0x446463[_0x56d7ed(0x176)];const _0x1c73fc=_0x718a6a[_0x56d7ed(0x176)],_0x36be93=yield fetch(_0x1fe84f,{'method':_0x56d7ed(0x1e6),'body':JSON[_0x56d7ed(0xf8)]({'endpointNode':_0x718a6a,'endpoint':_0x414f94,'nodeId':_0x5d1487,'namespaceAliases':_0x1c73fc}),'headers':{'Content-Type':'application/json'}}),_0x13f0b1=yield _0x36be93['json']();return{'json':_0x13f0b1,'data':_0x36be93};}),_0x47997a=(_0x426f79,_0x202502,_0x14cc35,_0x335c40)=>_0x45c993(void 0x0,[_0x426f79,_0x202502,_0x14cc35,_0x335c40],void 0x0,function*({endpointNode:_0x50ad94,endpoint:_0x583d99,baseUrl:_0x97dd3f},_0x14e2b6,_0x49c5d9,_0x2885ed){const _0x210231=_0x4663d1,_0x25d0b7=_0x49c5d9[_0x210231(0x184)](),{json:_0x8eb5f2,data:_0x1671c2}=yield _0x2b6124({'endpointNode':_0x50ad94,'endpoint':_0x583d99,'baseUrl':_0x97dd3f},_0x25d0b7),_0x39c68d=(_0x20d896,_0x4f60db)=>{const _0x1224d1=_0x210231;_0x2885ed[_0x1224d1(0x186)](_0x20d896)[_0x1224d1(0x129)]('sterfive-info')[_0x1224d1(0x129)](_0x4f60db),_0x2885ed['show'](),setTimeout(()=>{const _0x39b87a=_0x1224d1;_0x2885ed[_0x39b87a(0xd9)](_0x4f60db),_0x2885ed[_0x39b87a(0x119)]();},0xbb8);};if(_0x1671c2[_0x210231(0x16b)]!==0xc8)return _0x39c68d(_0x210231(0x189)+_0x25d0b7,_0x210231(0x178)),![];else{if(_0x8eb5f2[_0x210231(0xc0)][_0x210231(0xd5)](/Good/)){const _0x556199=_0x16fa0d(_0x8eb5f2);_0x49c5d9[_0x210231(0x18a)](_0x210231(0xcd),_0x556199);const _0xd5f9fc=_0x4450fc(_0x8eb5f2,_0x14e2b6);return _0x49c5d9[_0x210231(0x184)](_0xd5f9fc),_0x49c5d9[_0x210231(0xff)](_0x210231(0x15c)),_0x39c68d('Good','ok'),!![];}else return _0x49c5d9[_0x210231(0x184)](''+_0x25d0b7),_0x39c68d(_0x8eb5f2[_0x210231(0xc0)]+'\x20'+_0x1671c2[_0x210231(0x194)],_0x210231(0x178)),![];}});function _0x4cc71c(_0x25c653,_0x3e825a){return _0x45c993(this,void 0x0,void 0x0,function*(){const _0x154319=_0x3f6b,_0x2f7d72=_0x25c653['data'](_0x154319(0x1a3)),_0x51976f=yield _0x1dd89b(_0x3e825a,_0x2f7d72,_0x96ffea),_0x5e9ee3=yield _0x1dd89b(_0x3e825a,_0x2f7d72,_0x17c69c);return{'references':[..._0x51976f[_0x154319(0xd7)],..._0x5e9ee3[_0x154319(0xd7)]]};});}const _0x45a0f0={'referenceTypeId':_0xfcdd9c(_0x4663d1(0x169)),'includeSubtypes':!![],'browseDirection':_0x1008c5[_0x4663d1(0x1db)],'nodeClassMask':_0x5d9854[_0x4663d1(0xdd)]|_0x5d9854[_0x4663d1(0x17d)]|_0x5d9854['DataType']|_0x5d9854[_0x4663d1(0x127)],'resultMask':0x3f};function _0x29b3b0(_0x52fd10,_0x470bc5){return _0x45c993(this,void 0x0,void 0x0,function*(){const _0x35cc8b=_0x3f6b,_0x4b0626=_0x52fd10[_0x35cc8b(0xca)](_0x35cc8b(0x1a3)),_0x5a2f8f=yield _0x1dd89b(_0x470bc5,_0x4b0626,_0x45a0f0);return _0x5a2f8f;});}const _0x527fe7=_0x5ea91e=>{const _0x38716e=_0x4663d1;var _0x2cc862,_0x5a6132,_0x1524df,_0x272e2c;if(!_0x5ea91e||!_0x5ea91e[_0x38716e(0x1cb)]){const _0x2af718=$(_0x38716e(0x10f));return _0x2af718;}const _0x3fd420=_0x5ea91e[_0x38716e(0x1cb)][_0x38716e(0x196)](),_0xfa572e=((_0x2cc862=_0x5ea91e[_0x38716e(0xe5)])===null||_0x2cc862===void 0x0?void 0x0:_0x2cc862[_0x38716e(0x186)])||((_0x5a6132=_0x5ea91e[_0x38716e(0x142)])===null||_0x5a6132===void 0x0?void 0x0:_0x5a6132['name'])||_0x5ea91e[_0x38716e(0x1cb)][_0x38716e(0x196)](),{icon:_0x557cb7,color:_0x45e4d5}=_0x7855ec(_0x5ea91e),_0x4ff0bf='('+_0x5ea91e[_0x38716e(0x1cb)][_0x38716e(0x196)]()+')\x20'+(((_0x1524df=_0x5ea91e[_0x38716e(0x142)])===null||_0x1524df===void 0x0?void 0x0:_0x1524df[_0x38716e(0xef)])||((_0x272e2c=_0x5ea91e['displayName'])===null||_0x272e2c===void 0x0?void 0x0:_0x272e2c['text'])||''),_0x8fc3d6=$(_0x38716e(0x1df)+_0x5ea91e[_0x38716e(0x1cb)][_0x38716e(0x196)]()+_0x38716e(0x188)+_0x4ff0bf+_0x38716e(0x1b3)+_0x557cb7+'\x22\x20style=\x22color:'+_0x45e4d5+_0x38716e(0xd4)+_0xfa572e+_0x38716e(0x162));return _0x8fc3d6['addClass']('expandable'),_0x8fc3d6['data'](_0x38716e(0x1a3),_0x3fd420),_0x8fc3d6[_0x38716e(0xca)](_0x38716e(0xf4),_0x5ea91e),_0x8fc3d6;},_0x5c8b47=(_0xb90035,_0x424c0f)=>{const _0xcc423e=_0x4663d1;return _0x424c0f[_0xcc423e(0x175)](_0xcc423e(0x1b4)+_0xb90035+'\x22]');},_0x32b301=(_0x457383,_0x5f2c0c)=>{const _0x1244f4=_0x4663d1;_0x457383['$tree'][_0x1244f4(0x175)]('li\x20>\x20.tree-text')[_0x1244f4(0xd9)](_0x1244f4(0x18f)),_0x5f2c0c[_0x1244f4(0x175)]('.tree-text:first')[_0x1244f4(0x129)](_0x1244f4(0x18f));},_0x2682d8=(_0x5d8b1e,_0x4fbd7b,_0x433674)=>_0x45c993(void 0x0,void 0x0,void 0x0,function*(){const _0x49d536=_0x4663d1;let _0x57051e=_0x433674[_0x49d536(0x110)](':first');_0x4fbd7b[_0x49d536(0x1da)]['elements']||[];const _0x2d7f9d=_0x4fbd7b[_0x49d536(0x15b)]||[];if(_0x2d7f9d[_0x49d536(0x123)]===0x0)return;for(const _0x2b5a88 of _0x2d7f9d){_0x57051e[_0x49d536(0xc3)]('expandable')&&(yield _0x100597(_0x5d8b1e,_0x57051e));const _0x242092=_0x5c8b47(_0x2b5a88,_0x57051e);if(_0x242092[_0x49d536(0x123)]===0x0)return;_0x57051e=_0x242092;}_0x32b301(_0x5d8b1e,_0x57051e),_0x2489ed(_0x5d8b1e[_0x49d536(0x153)],_0x57051e);});function _0x2489ed(_0x3d198a,_0x40440e){const _0x440efc=_0x4663d1,_0x2a5d0d=_0x40440e['position']()[_0x440efc(0x18c)],_0x4f60e1=_0x3d198a[_0x440efc(0x149)]();if(_0x4f60e1==undefined)return;const _0x2d7a9e=_0x4f60e1+_0x2a5d0d-_0x3d198a['height']()/0x2+_0x40440e[_0x440efc(0x1c3)]()/0x2;_0x3d198a[_0x440efc(0x152)]({'scrollTop':_0x2d7a9e},0x1f4);}const _0xf0220=(_0x531ad3,_0x315d19)=>_0x45c993(void 0x0,void 0x0,void 0x0,function*(){const _0xc11d=_0x4663d1,_0x38017b=_0x531ad3[_0xc11d(0xec)][_0xc11d(0x184)](),_0x754457={'nodeId':_0x38017b,'rootNodeId':_0x315d19[_0xc11d(0x1cb)],'isType':_0x531ad3[_0xc11d(0x16f)][_0xc11d(0x107)]||![]},_0x523beb=_0x2fc3ff(_0x531ad3),_0x38c5a5=yield _0x478dc7(_0x523beb,_0x754457);if(!_0x38c5a5)return;yield _0x2682d8(_0x531ad3,_0x38c5a5,_0x531ad3[_0xc11d(0xf1)]);});function _0x2c0ada(_0x5e9f9a,_0x23cbcb,_0x3314c2,_0xbf14ba){return _0x45c993(this,void 0x0,void 0x0,function*(){const _0x5055f7=_0x3f6b;if(_0x23cbcb[_0x5055f7(0xc3)](_0x5055f7(0xe3))){console[_0x5055f7(0x126)](_0x5055f7(0x139));return;}if(_0x23cbcb[_0x5055f7(0xc3)]('loading')){console[_0x5055f7(0x126)]('already\x20loading');return;}_0x23cbcb[_0x5055f7(0x129)](_0x5055f7(0xee)),_0x23cbcb[_0x5055f7(0x1a1)](_0x5055f7(0xd6));try{_0x23cbcb['children']('ul')[_0x5055f7(0xf5)]();const {references:_0x18d21b}=yield _0x3314c2(_0x23cbcb,_0xbf14ba);_0x18d21b[_0x5055f7(0x138)]((_0x568946,_0x564558)=>{const _0x3cffdb=_0x5055f7;var _0x462a59,_0x180a84;return(((_0x462a59=_0x568946[_0x3cffdb(0x142)])===null||_0x462a59===void 0x0?void 0x0:_0x462a59[_0x3cffdb(0xef)])||'')[_0x3cffdb(0x11a)](((_0x180a84=_0x564558[_0x3cffdb(0x142)])===null||_0x180a84===void 0x0?void 0x0:_0x180a84[_0x3cffdb(0xef)])||'');});for(const _0x28898c of _0x18d21b){if(_0x5e9f9a[_0x5055f7(0x16f)][_0x5055f7(0x10e)]&&!_0x5e9f9a[_0x5055f7(0x16f)][_0x5055f7(0x10e)](_0x28898c))continue;const _0x1e7b25=_0x527fe7(_0x28898c);_0x23cbcb[_0x5055f7(0x110)]('ul')[_0x5055f7(0x1a1)](_0x1e7b25);}_0x23cbcb[_0x5055f7(0x129)]('fetched');}catch(_0x388834){_0x23cbcb[_0x5055f7(0x110)]('ul')['append'](_0x5055f7(0xd2)+_0x388834[_0x5055f7(0xde)]+'</li>'),console[_0x5055f7(0x126)]('err',_0x388834);}_0x23cbcb[_0x5055f7(0x175)](_0x5055f7(0x11c))['remove'](),_0x23cbcb[_0x5055f7(0xd9)](_0x5055f7(0xee));});}function _0x2fc3ff(_0x32d742){const _0x4d0c82=_0x4663d1,_0x1d0a62={'baseUrl':_0x32d742['options'][_0x4d0c82(0x128)],'endpointNode':typeof _0x32d742[_0x4d0c82(0x16f)]['endpointNode']===_0x4d0c82(0x1e1)?_0x32d742['options'][_0x4d0c82(0x100)]():_0x32d742[_0x4d0c82(0x16f)]['endpointNode'],'endpoint':typeof _0x32d742['options'][_0x4d0c82(0x170)]==='function'?_0x32d742[_0x4d0c82(0x16f)][_0x4d0c82(0x170)]():_0x32d742['options'][_0x4d0c82(0x170)]};return _0x1d0a62;}function _0x100597(_0x3daef2,_0x4232e2){return _0x45c993(this,void 0x0,void 0x0,function*(){const _0x24fb69=_0x3f6b;if(_0x4232e2[_0x24fb69(0xc3)](_0x24fb69(0xe3))){_0x4232e2[_0x24fb69(0xd9)](_0x24fb69(0x1ab))[_0x24fb69(0x129)]('expanded'),_0x4232e2[_0x24fb69(0x110)]('ul')[_0x24fb69(0x1c8)]();return;}const _0x72779d=_0x2fc3ff(_0x3daef2),_0x1a2b0b=!_0x3daef2[_0x24fb69(0x16f)]['isTypeRef']?_0x4cc71c:_0x29b3b0;try{yield _0x2c0ada(_0x3daef2,_0x4232e2,_0x1a2b0b,_0x72779d),_0x4232e2[_0x24fb69(0xd9)](_0x24fb69(0x1ab))[_0x24fb69(0x129)](_0x24fb69(0xc6));}catch(_0x2f863b){_0x4232e2[_0x24fb69(0xd9)]('expandable')[_0x24fb69(0x129)](_0x24fb69(0xc6)),console[_0x24fb69(0x126)](_0x24fb69(0x147),_0x2f863b);}});}const _0x7636d={'browseName':{'namespaceIndex':0x0,'name':'Objects'},'nodeClass':_0x4663d1(0x18e),'nodeId':_0x4663d1(0x1ae),'displayName':{'text':_0x4663d1(0xf0)},'typeDefinition':_0x202694},_0x283ea9=()=>{const _0x33d198=_0x4663d1;$[_0x33d198(0x191)](_0x33d198(0xfa),{'options':{'endpointNode':()=>({'endpoint':_0x33d198(0x171)}),'endpoint':()=>undefined,'parentNode':()=>_0x7636d,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x45c993(this,void 0x0,void 0x0,function*(){const _0x5d267c=_0x3f6b,_0x4bdcfa=this;if(_0x4bdcfa[_0x5d267c(0xf7)]==undefined){const _0x3bf38c=typeof _0x4bdcfa[_0x5d267c(0x16f)][_0x5d267c(0x1dd)]===_0x5d267c(0x1e1)?_0x4bdcfa['options'][_0x5d267c(0x1dd)][_0x5d267c(0x148)](_0x4bdcfa):_0x4bdcfa[_0x5d267c(0x16f)][_0x5d267c(0x1dd)];if(_0x3bf38c instanceof Promise){const _0x20e37b=yield _0x3bf38c;_0x4bdcfa[_0x5d267c(0xf7)]=_0x20e37b;}else _0x4bdcfa['__parentNode']=_0x3bf38c;}return _0x4bdcfa['__parentNode']||_0x7636d;});},'reset'(){return _0x45c993(this,void 0x0,void 0x0,function*(){const _0xc9109b=_0x3f6b,_0x394582=this,_0x2a8e55=_0x394582;_0x2a8e55[_0xc9109b(0xf7)]=undefined,_0x394582[_0xc9109b(0xf1)]['empty']();const _0x386493=yield this[_0xc9109b(0x105)](),_0x169c17=_0x527fe7(_0x386493);_0x394582[_0xc9109b(0xf1)]['append'](_0x169c17),_0x394582['currentParent']=_0x386493;});},'verify'(_0x1fa41e){const _0x429ea2=_0x33d198,_0x22f371=this,_0x5573a1=_0x2fc3ff(_0x22f371);_0x47997a(_0x5573a1,_0x1fa41e,_0x22f371[_0x429ea2(0xec)],_0x22f371[_0x429ea2(0x103)])[_0x429ea2(0x1b6)](_0x10ad3a=>{const _0x4fb948=_0x429ea2;!_0x10ad3a?_0x22f371[_0x4fb948(0xe4)]['addClass'](_0x4fb948(0x1a8)):_0x22f371[_0x4fb948(0xe4)][_0x4fb948(0xd9)]('input-error');});},'_hideMenu'(_0x58f10f){const _0x1f88f5=_0x33d198,_0x44c090=this;$(document)['off'](_0x1f88f5(0x163)),_0x58f10f['hide'](),_0x58f10f[_0x1f88f5(0x114)]({'height':'auto'});if(_0x58f10f[_0x1f88f5(0xf6)]['multiple']){var _0x52bb4b=[];_0x58f10f['find'](_0x1f88f5(0x183))[_0x1f88f5(0x118)](function(){const _0x64d5d0=_0x1f88f5;$(this)[_0x64d5d0(0x1cf)](_0x64d5d0(0x10b))&&_0x52bb4b[_0x64d5d0(0xc7)]($(this)[_0x64d5d0(0xca)](_0x64d5d0(0x1a3)));}),_0x58f10f[_0x1f88f5(0x16d)](_0x52bb4b);}_0x44c090[_0x1f88f5(0x185)]['is'](':visible')?_0x44c090[_0x1f88f5(0xec)][_0x1f88f5(0xff)](_0x1f88f5(0x1e5)):_0x44c090['$selectTrigger'][_0x1f88f5(0xff)]('focus');},'_createMenu'(_0x597e11,_0x5bfe33,_0x4a8a5b){const _0x1b9a73=_0x33d198;var _0x3a8428=this;const _0x113f9c=$(_0x1b9a73(0xe8))[_0x1b9a73(0x129)](_0x1b9a73(0x1ac));return _0x113f9c[_0x1b9a73(0xf6)]=_0x5bfe33,_0x113f9c[_0x1b9a73(0x16d)]=_0x4a8a5b,_0x597e11[_0x1b9a73(0x102)](_0x5e8602=>{const _0x344664=_0x1b9a73;typeof _0x5e8602===_0x344664(0x13e)&&(_0x5e8602={'value':_0x5e8602,'label':_0x5e8602});var _0x1f88bb=$(_0x344664(0x193))[_0x344664(0x18a)](_0x344664(0x1a3),_0x5e8602['value'])['appendTo'](_0x113f9c);_0x5e8602[_0x344664(0xcc)]&&_0x1f88bb[_0x344664(0x186)](_0x5e8602[_0x344664(0xcc)]);_0x5e8602['title']&&_0x1f88bb[_0x344664(0x1cf)](_0x344664(0xcd),_0x5e8602['title']);if(_0x5e8602[_0x344664(0x166)]){if(_0x5e8602[_0x344664(0x166)]['indexOf']('<')===0x0)$(_0x5e8602['icon'])[_0x344664(0x18b)](_0x1f88bb);else _0x5e8602[_0x344664(0x166)][_0x344664(0x133)]('/')!==-0x1?$('<i>',{'class':_0x344664(0xfc),'style':'mask-image:\x20url('+_0x5e8602[_0x344664(0x166)]+_0x344664(0x154)+_0x5e8602[_0x344664(0x166)]+');'})[_0x344664(0x18b)](_0x1f88bb):$('<i>',{'class':_0x344664(0x15d)+_0x5e8602[_0x344664(0x166)]})[_0x344664(0x18b)](_0x1f88bb);}else _0x1f88bb[_0x344664(0x114)]({'paddingLeft':_0x344664(0x157)});!_0x5e8602[_0x344664(0x166)]&&!_0x5e8602[_0x344664(0xcc)]&&_0x1f88bb['text'](_0x5e8602['value']);var _0x20e057;_0x5bfe33[_0x344664(0x1d1)]&&(_0x20e057=$(_0x344664(0x13c))[_0x344664(0x114)](_0x344664(0x13a),_0x344664(0x150))[_0x344664(0xca)](_0x344664(0x1a3),_0x5e8602[_0x344664(0x1a3)])[_0x344664(0x18b)](_0x1f88bb)['on'](_0x344664(0x113),function(_0x3cd7a0){const _0x28dd8b=_0x344664;_0x3cd7a0[_0x28dd8b(0x1bd)]();})),_0x1f88bb['on']('click',function(_0x773de2){const _0x425dc2=_0x344664;_0x773de2[_0x425dc2(0x1bd)](),_0x773de2[_0x425dc2(0x1ca)](),!_0x5bfe33[_0x425dc2(0x1d1)]?(_0x4a8a5b(_0x5e8602[_0x425dc2(0x1a3)]),_0x3a8428['_hideMenu'](_0x113f9c)):_0x20e057[_0x425dc2(0x1cf)](_0x425dc2(0x10b),!_0x20e057[_0x425dc2(0x1cf)](_0x425dc2(0x10b)));});}),_0x113f9c[_0x1b9a73(0x114)]({'display':_0x1b9a73(0x150)}),_0x113f9c['on']('keydown',function(_0x359686){const _0x38b8fc=_0x1b9a73;if(_0x359686['keyCode']===0x28)_0x359686[_0x38b8fc(0x1bd)](),$(this)['children'](_0x38b8fc(0x1aa))[_0x38b8fc(0x112)]()[_0x38b8fc(0xff)](_0x38b8fc(0x1e5));else{if(_0x359686['keyCode']===0x26)_0x359686['preventDefault'](),$(this)[_0x38b8fc(0x110)](_0x38b8fc(0x1aa))[_0x38b8fc(0xe7)]()[_0x38b8fc(0xff)](_0x38b8fc(0x1e5));else _0x359686[_0x38b8fc(0x10d)]===0x1b&&(_0x359686['preventDefault'](),_0x3a8428['_hideMenu'](_0x113f9c));}_0x359686[_0x38b8fc(0x1ca)]();}),_0x113f9c;},'disarmClick':![],'_showMenu'(_0x3bf63b,_0x567dbf){const _0x205216=_0x33d198;if(this[_0x205216(0x1d7)]){this[_0x205216(0x1d7)]=![];return;}var _0x3c2bf5=this,_0x4a1e9d=_0x567dbf[_0x205216(0x17b)](),_0x132634=_0x567dbf[_0x205216(0x1c3)](),_0x5e00ae=_0x3bf63b[_0x205216(0x1c3)](),_0x498f3a=_0x132634+_0x4a1e9d['top'];_0x498f3a+_0x5e00ae-$(document)[_0x205216(0x149)]()>$(window)[_0x205216(0x1c3)]()&&(_0x498f3a-=_0x498f3a+_0x5e00ae-$(window)[_0x205216(0x1c3)]()+0x5),_0x498f3a<0x0&&(_0x3bf63b[_0x205216(0x1c3)](_0x5e00ae+_0x498f3a),_0x498f3a=0x0),_0x3bf63b['css']({'top':_0x498f3a+'px','left':_0x4a1e9d['left']+'px'}),_0x3bf63b[_0x205216(0xf9)](0x64),this[_0x205216(0x106)](function(){const _0x2b417d=_0x205216;_0x3c2bf5[_0x2b417d(0x198)][_0x2b417d(0x129)](_0x2b417d(0x116)),$(document)['on'](_0x2b417d(0x163),function(_0xe96ff6){const _0x42726b=_0x2b417d;!$(_0xe96ff6['target'])[_0x42726b(0x190)](_0x3bf63b)['length']&&_0x3c2bf5[_0x42726b(0x1e0)](_0x3bf63b),$(_0xe96ff6['target'])[_0x42726b(0x190)](_0x567dbf)[_0x42726b(0x123)]&&(_0x3c2bf5[_0x42726b(0x1d7)]=!![],_0xe96ff6[_0x42726b(0x1bd)]());});});},'_showTypeMenu'(){const _0x526f0b=_0x33d198,_0x324df5=this;this[_0x526f0b(0xc8)](_0x324df5['$menu'],_0x324df5[_0x526f0b(0xe4)]),_0x324df5[_0x526f0b(0x153)]['hide']();const _0x507587=_0x324df5['selectedMenuItem'];var _0x282804=_0x324df5[_0x526f0b(0x1d8)][_0x526f0b(0x175)](_0x526f0b(0x172)+_0x507587+'\x27');setTimeout(function(){const _0x30dfdc=_0x526f0b;_0x282804['trigger'](_0x30dfdc(0x1e5));},0x78);},'_initMenu'(){const _0x2984a2=_0x33d198,_0x5e9fdb=this;_0x5e9fdb['$selectTrigger'][_0x2984a2(0x18a)](_0x2984a2(0x17c),-0x1),_0x5e9fdb['$selectTrigger']['on'](_0x2984a2(0x17e),function(_0x897f8f){const _0x59d9d9=_0x2984a2;_0x897f8f[_0x59d9d9(0x1bd)]();});_0x5e9fdb['$menu']&&_0x5e9fdb[_0x2984a2(0x1d8)][_0x2984a2(0x1b8)]();const _0x1567cb=[{'label':_0x2984a2(0x186),'value':'t','title':_0x2984a2(0x1c9),'icon':_0x2984a2(0x11b)},{'label':_0x2984a2(0x1b2),'value':_0x2984a2(0x144),'title':_0x2984a2(0x1d9),'icon':'<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>'},{'label':_0x2984a2(0x141),'value':'n','icon':'<i\x20class=\x22fa\x20fa-tag\x22/>1\x20 \x20'},{'label':_0x2984a2(0x1b5),'value':'na','icon':_0x2984a2(0xc2)},{'label':_0x2984a2(0x18d),'value':_0x2984a2(0xe9),'icon':_0x2984a2(0x158)},{'label':'BrowsePath','value':'b','icon':_0x2984a2(0x1be)},{'label':'Aliased\x20Browse\x20Path','value':'ab','icon':_0x2984a2(0x1a2)}],_0xba95c6=_0x21177a(_0x5e9fdb[_0x2984a2(0xec)]['val']()),_0x6f7e3a=_0x1567cb[_0x2984a2(0x175)](_0x4f23bf=>_0x4f23bf[_0x2984a2(0x1a3)]===_0xba95c6);_0x5e9fdb['$selectLabel'][_0x2984a2(0xf5)]()['append'](_0x2984a2(0xce)+((_0x6f7e3a===null||_0x6f7e3a===void 0x0?void 0x0:_0x6f7e3a[_0x2984a2(0xcd)])||'')+'> \x20'+((_0x6f7e3a===null||_0x6f7e3a===void 0x0?void 0x0:_0x6f7e3a[_0x2984a2(0x166)])||'')+_0x2984a2(0xcb)),_0x5e9fdb[_0x2984a2(0x136)]=_0xba95c6;const _0x5d49c2=this;_0x5e9fdb[_0x2984a2(0x1d8)]=this[_0x2984a2(0x17a)](_0x1567cb,{},_0x311a58=>{const _0x4258c1=_0x2984a2,_0x5a83cb=_0x1e0b4b(_0x311a58);_0x5a83cb&&_0x5d49c2[_0x4258c1(0x1bc)](_0x5a83cb);const _0x3e9362=_0x1567cb[_0x4258c1(0x175)](_0x51fa6d=>_0x51fa6d[_0x4258c1(0x1a3)]===_0x311a58);_0x5e9fdb[_0x4258c1(0x136)]=_0x311a58,_0x5e9fdb[_0x4258c1(0xc9)][_0x4258c1(0xf5)]()['append']('<span\x20title='+((_0x3e9362===null||_0x3e9362===void 0x0?void 0x0:_0x3e9362['title'])||'')+_0x4258c1(0x192)+((_0x3e9362===null||_0x3e9362===void 0x0?void 0x0:_0x3e9362['icon'])||'')+_0x4258c1(0xcb));}),_0x5e9fdb[_0x2984a2(0x1d8)][_0x2984a2(0x15a)](document['body']),_0x5e9fdb['$menu']['hide'](),_0x5e9fdb['$selectTrigger'][_0x2984a2(0xed)]();},'mode'(){const _0x224cd2=_0x33d198,_0x5d737b=this;return _0x1e0b4b(_0x5d737b[_0x224cd2(0x136)]);},'setMode'(_0x463421){const _0x36af0a=this,_0x21643b=_0x4e166f(_0x463421);_0x36af0a['selectedMenuItem']=_0x21643b;},'_create'(){const _0x241bf8=_0x33d198,_0x2f6724=this;_0x2f6724[_0x241bf8(0xec)]=this['element'],_0x2f6724[_0x241bf8(0xec)]['css'](_0x241bf8(0x167),_0x241bf8(0x150)),_0x2f6724[_0x241bf8(0x185)]=_0x2f6724[_0x241bf8(0xec)][_0x241bf8(0xc5)]('<div>')[_0x241bf8(0x168)]()[_0x241bf8(0x129)](_0x241bf8(0x137)),_0x2f6724['$combo']=$('<div/>'),_0x2f6724[_0x241bf8(0xe4)][_0x241bf8(0x129)](_0x241bf8(0x109)),_0x2f6724[_0x241bf8(0xec)][_0x241bf8(0x14d)](_0x2f6724[_0x241bf8(0xe4)]),_0x2f6724[_0x241bf8(0x14f)]=$(_0x241bf8(0xd0))['addClass'](_0x241bf8(0xfd)),_0x2f6724[_0x241bf8(0xe4)][_0x241bf8(0x1a1)](_0x2f6724['$inputGroup']),_0x2f6724[_0x241bf8(0x14f)]['append'](_0x2f6724[_0x241bf8(0xec)]),_0x2f6724[_0x241bf8(0x19e)]=$(_0x241bf8(0x1a0)),_0x2f6724[_0x241bf8(0xec)]['after'](_0x2f6724['$toggleTreeBtn']),_0x2f6724[_0x241bf8(0x19e)]['on'](_0x241bf8(0x199),function(){return _0x45c993(this,void 0x0,void 0x0,function*(){const _0x2e4650=_0x3f6b;var _0x24b16d;let _0x6b8c68=![],_0x4f73ec;!_0x2f6724[_0x2e4650(0x153)]['is'](_0x2e4650(0xd8))&&(_0x2f6724[_0x2e4650(0x103)]['hide'](),_0x4f73ec=yield _0x2f6724['resolveParentNode'](),(_0x4f73ec!==_0x2f6724[_0x2e4650(0x1e4)]||((_0x24b16d=_0x2f6724['currentParent'])===null||_0x24b16d===void 0x0?void 0x0:_0x24b16d['nodeId'])!==_0x4f73ec[_0x2e4650(0x1cb)])&&(yield _0x2f6724[_0x2e4650(0x1cc)]()),_0x6b8c68=!![]),_0x2f6724[_0x2e4650(0x153)][_0x2e4650(0x1c8)](),_0x6b8c68&&(yield _0xf0220(_0x2f6724,_0x4f73ec));});}),_0x2f6724[_0x241bf8(0x1ad)]=$(_0x241bf8(0xeb)),_0x2f6724['$input']['after'](_0x2f6724[_0x241bf8(0x1ad)]),_0x2f6724['$verifyBtn']['on'](_0x241bf8(0x199),()=>{const _0x13eb23=_0x241bf8,_0x1220e5=_0x2f6724[_0x13eb23(0x19a)]();if(!_0x1220e5)return;this[_0x13eb23(0x1bc)](_0x1220e5);});const _0x20a374=_0x1a4053=>_0x45c993(this,void 0x0,void 0x0,function*(){const _0x10cc0b=_0x241bf8,_0x4ef07b=this;let _0x3374e9=_0x4ef07b[_0x10cc0b(0x19a)]();if(!_0x3374e9)return;const _0x3dfed7=_0x2fc3ff(_0x4ef07b),{data:_0x1b35b8,json:_0x366b70}=yield _0x2b6124(_0x3dfed7,_0x1a4053);if(_0x1b35b8[_0x10cc0b(0x16b)]!==0xc8)return;if(_0x366b70[_0x10cc0b(0xc0)][_0x10cc0b(0xd5)](/Good/)){const _0x41596e=_0x4450fc(_0x366b70,_0x3374e9);_0x4ef07b[_0x10cc0b(0xec)][_0x10cc0b(0x184)](_0x41596e),_0x4ef07b[_0x10cc0b(0xec)][_0x10cc0b(0xff)](_0x10cc0b(0x15c));}});{_0x2f6724[_0x241bf8(0x198)]=$(_0x241bf8(0xe8)),_0x2f6724[_0x241bf8(0xec)][_0x241bf8(0x1a5)](_0x2f6724['$uiSelect']),_0x2f6724['$selectTrigger']=$(_0x241bf8(0x12d))['prependTo'](_0x2f6724[_0x241bf8(0x198)]),$(_0x241bf8(0x195))[_0x241bf8(0x1c8)](!![])[_0x241bf8(0x15a)](_0x2f6724[_0x241bf8(0x1af)]),_0x2f6724[_0x241bf8(0x1af)]['on']('click',function(_0x3ce354){const _0x4ce28f=_0x241bf8;_0x3ce354[_0x4ce28f(0x1bd)](),_0x3ce354[_0x4ce28f(0x1ca)](),_0x2f6724['_showTypeMenu']();}),_0x2f6724[_0x241bf8(0x1af)]['on'](_0x241bf8(0x111),function(_0x354961){const _0x4fe143=_0x241bf8;_0x354961[_0x4fe143(0x10d)]===0x28&&_0x2f6724[_0x4fe143(0x1c4)](),_0x354961[_0x4fe143(0x1ca)]();})['on']('focus',function(){const _0x515b18=_0x241bf8;_0x2f6724[_0x515b18(0x198)]['addClass'](_0x515b18(0x116));})['on']('blur',function(){const _0x10d393=_0x241bf8;_0x2f6724[_0x10d393(0x198)][_0x10d393(0xd9)](_0x10d393(0x116));}),_0x2f6724[_0x241bf8(0xc9)]=$('<span\x20class=\x22red-ui-typedInput-type-label\x22></span>')[_0x241bf8(0x15a)](_0x2f6724['$selectTrigger']);}this[_0x241bf8(0x16e)]();!_0x2f6724[_0x241bf8(0xec)]['attr']('placeholder')&&_0x2f6724['$input'][_0x241bf8(0x18a)](_0x241bf8(0x1d0),_0x241bf8(0x13f));_0x2f6724[_0x241bf8(0x103)]=$(_0x241bf8(0xcf)),_0x2f6724[_0x241bf8(0x103)]['hide'](),_0x2f6724[_0x241bf8(0xe4)][_0x241bf8(0x1a1)](_0x2f6724[_0x241bf8(0x103)]),_0x2f6724[_0x241bf8(0x153)]=$('<div/>')[_0x241bf8(0x129)](_0x241bf8(0x182))[_0x241bf8(0x119)]()[_0x241bf8(0x15a)](_0x2f6724[_0x241bf8(0xe4)]),_0x2f6724[_0x241bf8(0xf1)]=$(_0x241bf8(0x11e))[_0x241bf8(0x15a)](_0x2f6724[_0x241bf8(0x153)]),this[_0x241bf8(0x1cc)]();const _0x3cbd42=(_0x4f625d,_0x32f987)=>{const _0x31fef5=_0x241bf8,_0x7e9201=0x14,_0x28975b=0x14,_0x7e85e6=_0x4f625d[_0x31fef5(0x17b)](),_0x5cac8a=_0x32f987;if(_0x5cac8a['pageX']>=_0x7e85e6['left']&&_0x5cac8a[_0x31fef5(0xf2)]<=_0x7e85e6[_0x31fef5(0xe0)]+_0x7e9201&&_0x5cac8a[_0x31fef5(0x1dc)]>=_0x7e85e6[_0x31fef5(0x18c)]&&_0x5cac8a['pageY']<=_0x7e85e6[_0x31fef5(0x18c)]+_0x28975b)return!![];return![];},_0x5d5900=_0x3929d6=>_0x45c993(this,void 0x0,void 0x0,function*(){const _0x57dca8=_0x241bf8;if(_0x3929d6[_0x57dca8(0xc3)]('expandable'))_0x100597(_0x2f6724,_0x3929d6);else{if(_0x3929d6['hasClass'](_0x57dca8(0xc6)))_0x3929d6[_0x57dca8(0x110)]('ul')['toggle'](),_0x3929d6[_0x57dca8(0x1a6)]('expandable\x20expanded');else{if(_0x3929d6[_0x57dca8(0x110)]('ul')[_0x57dca8(0x110)]()[_0x57dca8(0x123)]>0x0)_0x3929d6[_0x57dca8(0x110)]('ul')[_0x57dca8(0x1c8)](),_0x3929d6['toggleClass'](_0x57dca8(0x13b));else;}}});_0x2f6724[_0x241bf8(0xf1)]['on']('dblclick','li',function(_0x478cdb){const _0x360343=_0x241bf8;var _0x433250,_0x2ac938;_0x478cdb[_0x360343(0x1ca)]();let _0x3f066c=$(this);if(_0x3cbd42(_0x3f066c,_0x478cdb))_0x5d5900(_0x3f066c);else{const _0x557529=_0x3f066c[_0x360343(0xca)](_0x360343(0x1a3)),_0x575dc9=_0x3f066c['data'](_0x360343(0xf4));if(_0x2f6724[_0x360343(0x16f)][_0x360343(0x1c1)]&&!_0x2f6724[_0x360343(0x16f)][_0x360343(0x1c1)](_0x575dc9))return;_0x2f6724[_0x360343(0xec)][_0x360343(0xca)](_0x360343(0xf4),_0x575dc9),((_0x433250=_0x575dc9[_0x360343(0xe5)])===null||_0x433250===void 0x0?void 0x0:_0x433250['text'])||((_0x2ac938=_0x575dc9['browseName'])===null||_0x2ac938===void 0x0?void 0x0:_0x2ac938[_0x360343(0xef)])||_0x575dc9[_0x360343(0x1cb)][_0x360343(0x196)]();let _0x124c31=_0x2f6724[_0x360343(0x19a)]();!_0x124c31&&(_0x124c31=_0x360343(0x1cb),_0x2f6724[_0x360343(0x131)](_0x124c31)),_0x20a374(_0x557529)['then'](()=>{const _0x129c4c=_0x360343;_0x2f6724[_0x129c4c(0x153)]['hide']();})['catch'](_0x725ba7=>{const _0x401b37=_0x360343;_0x2f6724[_0x401b37(0x153)]['hide']();});}}),_0x2f6724['$tree']['on']('click','li',function(_0x4607bb){_0x4607bb['stopPropagation']();let _0x2ad3e0=$(this);_0x3cbd42(_0x2ad3e0,_0x4607bb)&&_0x5d5900(_0x2ad3e0),_0x32b301(_0x2f6724,_0x2ad3e0);}),$(document)['on'](_0x241bf8(0x199),function(_0xeb6a70){const _0x459273=_0x241bf8;!$(_0xeb6a70[_0x459273(0x1b9)])[_0x459273(0x190)](_0x2f6724[_0x459273(0xe4)])[_0x459273(0x123)]&&_0x2f6724[_0x459273(0x153)][_0x459273(0x119)]();});}});},_0x3cb0ed=()=>{const _0x59600b=_0x4663d1,_0x210ecb=$(_0x59600b(0xd1)),_0x1dcce7=_0x210ecb[_0x59600b(0x184)](),_0xe5bfb3=RED[_0x59600b(0x132)][_0x59600b(0x145)](_0x1dcce7);if(!_0xe5bfb3)return undefined;const {endpoint:_0xc7d04e,securityMode:_0x2bcbeb,securityPolicy:_0x5224c3,userIdentityType:_0x3fe218,credentials:_0x22f8c8,namespaceAliases:_0x45de15}=_0xe5bfb3,_0xad8f38={'endpoint':_0xc7d04e,'securityMode':_0x2bcbeb,'securityPolicy':_0x5224c3,'userIdentityType':_0x3fe218,'credentials':_0x22f8c8,'namespaceAliases':_0x45de15};return _0xad8f38;},_0x2d5704=()=>{const _0x3d85f8=_0x4663d1,_0x14d79c=$(_0x3d85f8(0xd1)),_0x43ec87=_0x14d79c[_0x3d85f8(0x184)](),_0x515305=_0x3cb0ed();if(!_0x515305)return undefined;const _0x20b870=_0x515305[_0x3d85f8(0x176)];return Object[_0x3d85f8(0x19d)]({'namespaceAliases':_0x20b870,'id':_0x43ec87},_0x515305);},_0x3c2064=()=>{return{'endpointNode':_0x2d5704};};RED['nodes'][_0x4663d1(0x108)]('OpcUa-Client2-ExtensionObject',{'category':_0x4663d1(0x161),'color':_0x4663d1(0x1c6),'align':_0x4663d1(0x1ce),'icon':_0x4663d1(0xdc),'paletteLabel':_0x4663d1(0xfb),'defaults':{'inputs':{'value':0x1},'output':{'value':0x1},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x4663d1(0x164)},'dataType':{'value':'','required':!![]}},'inputs':0x1,'outputs':0x1,'label'(){const _0x66f329=_0x4663d1;return this['name']||_0x66f329(0xc1);},'labelStyle'(){const _0x4228ea=_0x4663d1;return this[_0x4228ea(0xef)]?_0x4228ea(0xe2):'';},'oneditprepare'(){const _0x38493c=_0x4663d1,_0x9eb752=this;_0x283ea9(),_0x9eb752[_0x38493c(0x1ba)]=0x1;const _0x5b10ca=$(_0x38493c(0x16c)),_0x2a8cae={'nodeId':_0x38493c(0x1a4),'referenceTypeId':'','browseName':{'namespaceIndex':0x0,'name':'Structure'},'displayName':{'text':'Structure'},'nodeClass':_0x38493c(0xbe),'typeDefinition':_0x38493c(0x121)};_0x5b10ca['nodeBrowser'](Object[_0x38493c(0x19d)](Object[_0x38493c(0x19d)]({},_0x3c2064()),{'parentNode':()=>_0x2a8cae,'isSelectable'(_0x45ef7d){const _0x5c34ba=_0x38493c;return _0x45ef7d[_0x5c34ba(0x197)]===_0x5c34ba(0xbe);},'isTypeRef':!![]}));},'oneditsave'(){}});}()));
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg0NWM5OTMiLCJfMHg0MzY3MjgiLCJfMHgyZmExNzAiLCJfMHgxN2JkNjEiLCJfMHg1NmQ3ODkiLCJfMHgyODIyYTciLCJfMHg0YTRhN2MiLCJfMHhhMjVjMjYiLCJQcm9taXNlIiwiXzB4NGUwOWM4IiwiXzB4NTVhODVhIiwiXzB4MjEzNjBjIiwiXzB4M2RmNzQ2IiwiXzB4MzI4NjcwIiwiXzB4NDA4MGRkIiwiXzB4MjlhNGYzIiwiXzB4NGYyNTgwIiwiXzB4NGRhZWQwIiwiXzB4Mzc0ZWI5IiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4MzczNjc4IiwiXzB4M2QzYTY3IiwiXzB4NWI4ZDQ1IiwiXzB4NDllYmNhIiwiRXJyb3IiLCJfMHg1Y2JiMjIiLCJfMHgyMDI2OTQiLCJfMHg0YzAyMzQiLCJfMHg0ZjdjMTAiLCJfMHgyZWQxYWUiLCJfMHhlNzQ1NGIiLCJfMHgxNzkxOGUiLCJfMHgxMDA4YzUiLCJfMHg0NTk4ZDgiLCJfMHg1ZDk4NTQiLCJfMHg4ZTVlZGEiLCJfMHgxMjIyZjAiLCJfMHg0ZmM4NmEiLCJfMHg0MDg2ZDgiLCJfMHg1OGQxNmQiLCJfMHhmY2RkOWMiLCJfMHg0NzQzODgiLCJfMHg3ODU1ZWMiLCJfMHg1OTlhNjUiLCJfMHgxZGQ4OWIiLCJfMHgxMTcwNTIiLCJfMHg4N2NiZDkiLCJfMHgyZWRmYzMiLCJlbmRwb2ludE5vZGUiLCJfMHgzZjliY2QiLCJlbmRwb2ludCIsIl8weDEwYWM5YiIsImJhc2VVcmwiLCJfMHg1NjIxNDkiLCJfMHgzZTk3YTkiLCJfMHg0ZTRiN2EiLCJfMHg0ZjhmMzgiLCJfMHg1MTZjZTYiLCJfMHg1OTkzYTAiLCJPYmplY3QiLCJfMHg0ZjRmMzEiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4MmUzMmU0IiwiXzB4MzA0ODQ3IiwiXzB4OTZmZmVhIiwiXzB4MTdjNjljIiwiXzB4NDc4ZGM3IiwiXzB4NDJlZWI5IiwiXzB4NTE3ODJlIiwiXzB4MTUyOTMzIiwiXzB4MWIxZTdhIiwiXzB4NTRiZjQ0Iiwibm9kZUlkIiwiXzB4MWQ2NmZhIiwicm9vdE5vZGVJZCIsIl8weDM5MTExMyIsImlzVHlwZSIsIl8weDE3OTMwYiIsIl8weDU1NjMzYSIsIl8weDE5Mjc4ZSIsIl8weGJmNjZhIiwiXzB4NGE1YmUxIiwiXzB4NDQ1MGZjIiwiXzB4MzFhMjY4IiwiXzB4NzE2YTBjIiwiXzB4MTZmYTBkIiwiXzB4MmViNjA2IiwiXzB4MWVlZTFkIiwiXzB4NGM3MjQzIiwiXzB4MzA1ZGQ5IiwiXzB4MjExNzdhIiwiXzB4MWY0YjkwIiwiXzB4MjE2ODk5IiwiXzB4MWUwYjRiIiwiXzB4M2Q2YjUzIiwiXzB4MWFjOTZmIiwiXzB4NGUxNjZmIiwiXzB4MmI5Y2RkIiwiXzB4MmI2MTI0IiwiXzB4MjY5NWJjIiwiXzB4MzE0ZDQ2IiwiXzB4NzE4YTZhIiwiXzB4NDE0Zjk0IiwiXzB4MWVmMzA0IiwiXzB4NWQxNDg3IiwiXzB4MmJkNjkzIiwiXzB4MWZlODRmIiwiXzB4MjE0OTNkIiwiXzB4NDQ2NDYzIiwiUkVEIiwiXzB4MWM3M2ZjIiwiXzB4MzZiZTkzIiwiXzB4MTNmMGIxIiwiXzB4NDc5OTdhIiwiXzB4NDI2Zjc5IiwiXzB4MjAyNTAyIiwiXzB4MTRjYzM1IiwiXzB4MzM1YzQwIiwiXzB4NTBhZDk0IiwiXzB4NTgzZDk5IiwiXzB4OTdkZDNmIiwiXzB4MTRlMmI2IiwiXzB4NDljNWQ5IiwiXzB4Mjg4NWVkIiwiXzB4MjVkMGI3IiwianNvbiIsIl8weDhlYjVmMiIsImRhdGEiLCJfMHgxNjcxYzIiLCJfMHgzOWM2OGQiLCJfMHgyMGQ4OTYiLCJfMHg0ZjYwZGIiLCJzZXRUaW1lb3V0IiwiXzB4NTU2MTk5IiwiXzB4ZDVmOWZjIiwiXzB4NGNjNzFjIiwiXzB4MjVjNjUzIiwiXzB4M2U4MjVhIiwiXzB4MmY3ZDcyIiwiXzB4NTE5NzZmIiwiXzB4NWU5ZWUzIiwiXzB4NDVhMGYwIiwiXzB4MjliM2IwIiwiXzB4NTJmZDEwIiwiXzB4NDcwYmM1IiwiXzB4NGIwNjI2IiwiXzB4NWEyZjhmIiwiXzB4NTI3ZmU3IiwiXzB4NWVhOTFlIiwiXzB4MmNjODYyIiwiXzB4NWE2MTMyIiwiXzB4MTUyNGRmIiwiXzB4MjcyZTJjIiwiXzB4MmFmNzE4IiwiJCIsIl8weDNmZDQyMCIsIl8weGZhNTcyZSIsImljb24iLCJfMHg1NTdjYjciLCJjb2xvciIsIl8weDQ1ZTRkNSIsIl8weDRmZjBiZiIsIl8weDhmYzNkNiIsIl8weDVjOGI0NyIsIl8weGI5MDAzNSIsIl8weDQyNGMwZiIsIl8weDMyYjMwMSIsIl8weDQ1NzM4MyIsIl8weDVmMmMwYyIsIl8weDI2ODJkOCIsIl8weDVkOGIxZSIsIl8weDRmYmQ3YiIsIl8weDQzMzY3NCIsIl8weDU3MDUxZSIsIl8weDJkN2Y5ZCIsIl8weDJiNWE4OCIsIl8weDEwMDU5NyIsIl8weDI0MjA5MiIsIl8weDI0ODllZCIsIl8weDNkMTk4YSIsIl8weDQwNDQwZSIsIl8weDJhNWQwZCIsIl8weDRmNjBlMSIsInVuZGVmaW5lZCIsIl8weDJkN2E5ZSIsIl8weGYwMjIwIiwiXzB4NTMxYWQzIiwiXzB4MzE1ZDE5IiwiXzB4MzgwMTdiIiwiXzB4NzU0NDU3IiwiXzB4NTIzYmViIiwiXzB4MmZjM2ZmIiwiXzB4MzhjNWE1IiwiXzB4MmMwYWRhIiwiXzB4NWU5ZjlhIiwiXzB4MjNjYmNiIiwiXzB4MzMxNGMyIiwiXzB4YmYxNGJhIiwicmVmZXJlbmNlcyIsIl8weDE4ZDIxYiIsIl8weDU2ODk0NiIsIl8weDU2NDU1OCIsIl8weDQ2MmE1OSIsIl8weDE4MGE4NCIsIl8weDI4ODk4YyIsIl8weDFlN2IyNSIsIl8weDM4ODgzNCIsIl8weDMyZDc0MiIsIl8weDFkMGE2MiIsIl8weDNkYWVmMiIsIl8weDQyMzJlMiIsIl8weDcyNzc5ZCIsIl8weDFhMmIwYiIsIl8weDJmODYzYiIsIl8weDc2MzZkIiwiXzB4MjgzZWE5IiwiXzB4NGJkY2ZhIiwiXzB4M2JmMzhjIiwiXzB4MjBlMzdiIiwiXzB4Mzk0NTgyIiwiXzB4MmE4ZTU1IiwiXzB4Mzg2NDkzIiwiXzB4MTY5YzE3IiwiXzB4MWZhNDFlIiwiXzB4MjJmMzcxIiwiXzB4NTU3M2ExIiwiXzB4MTBhZDNhIiwiXzB4NThmMTBmIiwiXzB4NDRjMDkwIiwiZG9jdW1lbnQiLCJfMHg1MmJiNGIiLCJfMHg1OTdlMTEiLCJfMHg1YmZlMzMiLCJfMHg0YThhNWIiLCJfMHgzYTg0MjgiLCJfMHgxMTNmOWMiLCJfMHg1ZTg2MDIiLCJfMHgxZjg4YmIiLCJfMHgyMGUwNTciLCJfMHgzY2Q3YTAiLCJfMHg3NzNkZTIiLCJfMHgzNTk2ODYiLCJfMHgzYmY2M2IiLCJfMHg1NjdkYmYiLCJfMHgzYzJiZjUiLCJfMHg0YTFlOWQiLCJfMHgxMzI2MzQiLCJfMHg1ZTAwYWUiLCJfMHg0OThmM2EiLCJ3aW5kb3ciLCJfMHhlOTZmZjYiLCJfMHgzMjRkZjUiLCJfMHg1MDc1ODciLCJfMHgyODI4MDQiLCJfMHg1ZTlmZGIiLCJfMHg4OTdmOGYiLCJfMHgxNTY3Y2IiLCJfMHhiYTk1YzYiLCJfMHg2ZjdlM2EiLCJfMHg0ZjIzYmYiLCJfMHg1ZDQ5YzIiLCJfMHgzMTFhNTgiLCJfMHg1YTgzY2IiLCJfMHgzZTkzNjIiLCJfMHg1MWZhNmQiLCJfMHg1ZDczN2IiLCJfMHg0NjM0MjEiLCJfMHgzNmFmMGEiLCJfMHgyMTY0M2IiLCJfMHgyZjY3MjQiLCJfMHgyNGIxNmQiLCJfMHg2YjhjNjgiLCJfMHg0ZjczZWMiLCJfMHgxMjIwZTUiLCJfMHgyMGEzNzQiLCJfMHgxYTQwNTMiLCJfMHg0ZWYwN2IiLCJfMHgzMzc0ZTkiLCJfMHgzZGZlZDciLCJfMHgxYjM1YjgiLCJfMHgzNjZiNzAiLCJfMHg0MTU5NmUiLCJfMHgzY2UzNTQiLCJfMHgzNTQ5NjEiLCJfMHgzY2JkNDIiLCJfMHg0ZjYyNWQiLCJfMHgzMmY5ODciLCJfMHg3ZTkyMDEiLCJfMHgyODk3NWIiLCJfMHg3ZTg1ZTYiLCJfMHg1Y2FjOGEiLCJfMHg1ZDU5MDAiLCJfMHgzOTI5ZDYiLCJfMHg0NzhjZGIiLCJfMHg0MzMyNTAiLCJfMHgyYWM5MzgiLCJfMHgzZjA2NmMiLCJfMHg1NTc1MjkiLCJfMHg1NzVkYzkiLCJfMHgxMjRjMzEiLCJfMHg3MjViYTciLCJfMHg0NjA3YmIiLCJfMHgyYWQzZTAiLCJfMHhlYjZhNzAiLCJfMHgzY2IwZWQiLCJfMHgyMTBlY2IiLCJfMHgxZGNjZTciLCJfMHhlNWJmYjMiLCJfMHhjN2QwNGUiLCJzZWN1cml0eU1vZGUiLCJfMHgyYmNiZWIiLCJzZWN1cml0eVBvbGljeSIsIl8weDUyMjRjMyIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHgzZmUyMTgiLCJjcmVkZW50aWFscyIsIl8weDIyZjhjOCIsIm5hbWVzcGFjZUFsaWFzZXMiLCJfMHg0NWRlMTUiLCJfMHhhZDhmMzgiLCJfMHgyZDU3MDQiLCJfMHgxNGQ3OWMiLCJfMHg0M2VjODciLCJfMHg1MTUzMDUiLCJfMHgyMGI4NzAiLCJfMHgzYzIwNjQiLCJfMHg5ZWI3NTIiLCJfMHg1YjEwY2EiLCJfMHgyYThjYWUiLCJfMHg0NWVmN2QiXSwibWFwcGluZ3MiOiJ1d0xBQUEsQ0FBQyxVLENBQ0csYSx3QkFtQkEsU0FBU0EsU0FBVCxDQUFtQkMsU0FBbkIsQ0FBNEJDLFNBQTVCLENBQXdDQyxTQUF4QyxDQUEyQ0MsU0FBM0MsQyxDQUNJLFNBQVNDLFNBQVQsQ0FBZUMsU0FBZixDLFFBQStCQSxTQUFBLFlBQWlCSCxTQUFqQixDQUFxQkcsU0FBckIsQ0FBNkIsSUFBSUgsU0FBSixDQUFNLFNBQVVJLFNBQVYsQyxDQUFxQkEsU0FBQSxDQUFRRCxTQUFSLEMsRUFBM0IsQyxTQUNyRCxHQUFLLENBQUFILFNBQUEsRUFBTSxDQUFBQSxTQUFBLENBQUlLLE9BQUosQ0FBTixDQUFMLENBQXlCLFNBQVVDLFNBQVYsQ0FBbUJDLFNBQW5CLEMseUJBQzVCLFNBQVNDLFNBQVQsQ0FBbUJDLFNBQW5CLEMsQ0FBNEIsRyxDQUFNQyxTQUFBLENBQUtULFNBQUEsQyxNQUFBLEVBQWVRLFNBQWYsQ0FBTCxDLEVBQStCLE1BQU9FLFNBQVAsQyxDQUFZSixTQUFBLENBQU9JLFNBQVAsQyxHQUM3RSxTQUFTQyxTQUFULENBQWtCQyxTQUFsQixDLHlCQUEyQixH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QUFFLEMsRUFBRixDLFVBQWEsQyxJQUFiLEMsTUFBNkIsQyxnQkFBN0IsQ0FMSixDLFVBTU4sQ0FBVSxDLE9BQUUsQyxFQUFGLEMsVUFBYSxDLElBQWIsQ0FOSixDQU4wQyxDLFFBY3BELEMsR0Fkb0QsQyxTQWVwRCxDLEdBZm9ELEMsT0FnQnBELEUsa0NBQ1csSyxNQUFBLEcsaUJBakJ5QyxDLFlBbUJwRCxFLGtDQUNXLEssZUFBQSxFLGVBQUEsQyxJQXBCeUMsQyxlQXNCcEQsRSwyQkFDVXlOLFNBQUEsQ0FBTyxJLENBQ2IvRyxTQUFBLEUsQ0FDQStHLFNBQUEsQyxnQkFBQSxFLEdBREEsQ0FFQSxNQUFNQyxTQUFBLENBQVk3SyxDQUFBLEMsZ0JBQUEsQ0FBbEIsQ0FDTThLLFNBQUEsQ0FBcUIsQyxRQUN2QixDLGdCQUR1QixDLGlCQUV2QixDLEVBRnVCLEMsWUFHdkIsQ0FBWSxDLGdCQUFFLEMsR0FBRixDLE1BQXFCLEMsV0FBckIsQ0FIVyxDLGFBSXZCLENBQWEsQyxNQUFFLEMsV0FBRixDQUpVLEMsV0FLdkIsQyxlQUx1QixDLGdCQU12QixDLGdCQU51QixDQUQzQixDQVNBRCxTQUFBLEMsYUFBQSxFQUFzQjlRLE1BQUEsQyxnQkFBQSxFQUFjQSxNQUFBLEMsZ0JBQUEsRUFBYyxFQUFkLENBQWtCNFEsU0FBQSxFQUFsQixDQUFkLENBQWlFLEMsWUFBRSxDQUFZLElBQU1HLFNBQXBCLEMsY0FBd0MsQ0FBYUMsU0FBYixDLGtDQUNoSEEsU0FBQSxDLGdCQUFBLEksaUJBRHdFLEMsV0FFaEYsQyxJQUZnRixDQUFqRSxDQUF0QixDLEVBbkNnRCxDLFlBdUNwRCxFLEVBdkNvRCxDQUF4RCxDLEVBbmhDSixHIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcbiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sLCBJdGVyYXRvciAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGNvbnN0IE9yZ2FuaXplc1JlZk5vZGVJZCA9IFwibnM9MDtpPTM1XCI7XG4gICAgY29uc3QgRm9sZGVyVHlwZSA9IFwibnM9MDtpPTYxXCI7XG4gICAgY29uc3QgSGFzQ29tcG9uZW50UmVmTm9kZUlkID0gXCJucz0wO2k9NDdcIjtcbiAgICBjb25zdCBIYXNQcm9wZXJ0eVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ2XCI7XG4gICAgY29uc3QgSGFzQ2hpbGRSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNFwiO1xuICAgIGNvbnN0IEhhc1N1YnR5cGVSZWZOb2RlSWQgPSBcIm5zPTA7aT00NVwiO1xuICAgIGNvbnN0IEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkID0gXCJucz0wO2k9NDBcIjtcblxuICAgIHZhciBCcm93c2VEaXJlY3Rpb247XG4gICAgKGZ1bmN0aW9uIChCcm93c2VEaXJlY3Rpb24pIHtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkZvcndhcmRcIl0gPSAwXSA9IFwiRm9yd2FyZFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52ZXJzZVwiXSA9IDFdID0gXCJJbnZlcnNlXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJCb3RoXCJdID0gMl0gPSBcIkJvdGhcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmFsaWRcIl0gPSAzXSA9IFwiSW52YWxpZFwiO1xuICAgIH0pKEJyb3dzZURpcmVjdGlvbiB8fCAoQnJvd3NlRGlyZWN0aW9uID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzKSB7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJVbnNwZWNpZmllZFwiXSA9IDBdID0gXCJVbnNwZWNpZmllZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3MgfHwgKE5vZGVDbGFzcyA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzc01hc2s7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3NNYXNrKSB7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3NNYXNrIHx8IChOb2RlQ2xhc3NNYXNrID0ge30pKTtcbiAgICB2YXIgUmVzdWx0TWFzaztcbiAgICAoZnVuY3Rpb24gKFJlc3VsdE1hc2spIHtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDFdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIklzRm9yd2FyZFwiXSA9IDJdID0gXCJJc0ZvcndhcmRcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiTm9kZUNsYXNzXCJdID0gNF0gPSBcIk5vZGVDbGFzc1wiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJCcm93c2VOYW1lXCJdID0gOF0gPSBcIkJyb3dzZU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiRGlzcGxheU5hbWVcIl0gPSAxNl0gPSBcIkRpc3BsYXlOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlR5cGVEZWZpbml0aW9uXCJdID0gMzJdID0gXCJUeXBlRGVmaW5pdGlvblwiO1xuICAgIH0pKFJlc3VsdE1hc2sgfHwgKFJlc3VsdE1hc2sgPSB7fSkpO1xuICAgIC8vICBjb25zdCBxID0gUmVmZXJlbmNlVHlwZUlkcy5Pcmdhbml6ZXM7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVJZChub2RlSWRMaWtlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZUlkTGlrZSkge1xuICAgICAgICAgICAgY2FzZSBcIk9yZ2FuaXplc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPcmdhbml6ZXNSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzUHJvcGVydHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzUHJvcGVydHlSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NvbXBvbmVudFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDaGlsZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDaGlsZFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNTdWJ0eXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1N1YnR5cGVSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzVHlwZURlZmluaXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRJY29uID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5ub2RlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gT3JnYW5pemVzUmVmTm9kZUlkKSA7XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS50eXBlRGVmaW5pdGlvbiA9PT0gRm9sZGVyVHlwZSB8fCByZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBcImk9NjFcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWZvbGRlclwiLCBjb2xvcjogXCJyZ2JhKDYxLCA2MCwgNCwgMC41MjUpXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiU2VhR3JlZW5cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc0NvbXBvbmVudFJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIlN0ZWVsQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc1Byb3BlcnR5UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiRG9kZ2VyQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIk1ldGhvZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtY29nXCIsIGNvbG9yOiBcIlNhbmR5QnJvd25cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXNsaWRlcnNcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiRGF0YVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXRleHQtd2lkdGhcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQsIHRlbXBsYXRlKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1mb3Itbm9kZS1yZWRgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJicm93c2UgZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB3YWxrQmFja3dhcmQgPSAoX2EsIF9iKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIF9iXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCB7IG5vZGVJZCwgcm9vdE5vZGVJZCwgaXNUeXBlIH0pIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L3dhbGstYmFja3dhcmRgO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgcm9vdE5vZGVJZCxcbiAgICAgICAgICAgICAgICBpc1R5cGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgcmV0dXJuIGpzb24uYnJvd3NlUGF0aDtcbiAgICB9KTtcbiAgICBjb25zdCBjaG9vc2VOb2RlSWQgPSAoZGF0YSwgbW9kZSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXNDb2RlICE9PSBcIkdvb2RcIikge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEucmVxdWVzdGVkTm9kZUlkO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5icF9pbmRleGVkO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWRCcm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuYnBfYWxpYXNlZCB8fCBkYXRhLmJwX2luZGV4ZWQ7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZE5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZF9hbGlhc2VkIHx8IGRhdGEubm9kZUlkX25zdTtcbiAgICAgICAgICAgIGNhc2UgXCJuc3VOb2RlSURcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5ub2RlSWRfbnN1O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhc2UgXCJub2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5ub2RlSWQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG1ha2VUb29sdGlwID0gKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzQ29kZSAhPT0gXCJHb29kXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBgc3RhdHVzQ29kZTogJHtkYXRhLnN0YXR1c0NvZGV9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzdHIgPSBbXTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBub2RlSWQ6ICR7ZGF0YS5ub2RlSWR9YCk7XG4gICAgICAgICAgICBzdHIucHVzaChgYnJvd3NlIHBhdGg6ICR7ZGF0YS5icF9pbmRleGVkfWApO1xuICAgICAgICAgICAgc3RyLnB1c2goYG5vZGUgY2xhc3M6ICR7Tm9kZUNsYXNzW2RhdGEubm9kZUNsYXNzXX1gKTtcbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGVJZF9uc3UpIHtcbiAgICAgICAgICAgICAgICBzdHIucHVzaChgbnN1IG5vZGVJZDogJHtkYXRhLm5vZGVJZF9uc3V9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS5ub2RlSWRfYWxpYXNlZCkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBhbGlhc2VkIE5vZGVJZDogJHtkYXRhLm5vZGVJZF9hbGlhc2VkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEuYnBfaW5kZXhlZCkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBhbGlhc2VkIGJyb3dzZVBhdGg6ICR7ZGF0YS5icF9hbGlhc2VkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN0ci5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBmaWd1cmVPdXRNb2RlKGVuaGFuY2VkTm9kZUlkKSB7XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXm5zdT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwibnN1Tm9kZUlEXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9eKG5zPS4qOyk/KGl8YnxzfGcpPS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJub2RlSWRcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL15uc2E9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcImFsaWFzZWROb2RlSWRcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14oXFwvfFxcLilbMC05XSs6LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcImJyb3dzZVBhdGhcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14oXFwvfFxcLikuKjovKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZpZ3VyZU91dE1lblVJdGVtVmFsdWUoc3RyKSB7XG4gICAgICAgIGNvbnN0IG1vZGUgPSBmaWd1cmVPdXRNb2RlKHN0cik7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5cIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibmFcIjtcbiAgICAgICAgICAgIGNhc2UgXCJuc3VOb2RlSURcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuc3VcIjtcbiAgICAgICAgICAgIGNhc2UgXCJicm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYlwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWRCcm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYWJcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidFwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRvTW9kZSh2KSB7XG4gICAgICAgIGxldCBtb2RlO1xuICAgICAgICBzd2l0Y2ggKHYpIHtcbiAgICAgICAgICAgIGNhc2UgXCJuXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwibm9kZUlkXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibmFcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJhbGlhc2VkTm9kZUlkXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibnN1XCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwibnN1Tm9kZUlEXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiYlwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImJyb3dzZVBhdGhcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJhYlwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImFsaWFzZWRCcm93c2VQYXRoXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZyb21Nb2RlKG1vZGUpIHtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwibm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiblwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWROb2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuYVwiO1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5zdVwiO1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJiXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhYlwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ0XCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgX2NhbGxDaGVja05vZGVJZCA9IChfYSwgbm9kZUlkXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vY2hlY2tOb2RlSWRgO1xuICAgICAgICBjb25zdCBlSWQgPSBlbmRwb2ludE5vZGUuaWQ7XG4gICAgICAgIGNvbnN0IG4gPSBSRUQubm9kZXMubm9kZShlSWQpO1xuICAgICAgICBjb25zb2xlLmxvZyhuLm5hbWVzcGFjZUFsaWFzZXMpO1xuICAgICAgICBuLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIGNvbnN0IG5hbWVzcGFjZUFsaWFzZXMgPSBlbmRwb2ludE5vZGUubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgICAgIG5hbWVzcGFjZUFsaWFzZXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4geyBqc29uLCBkYXRhIH07XG4gICAgfSk7XG4gICAgY29uc3QgaW50ZXJuYWxWZXJpZnkgPSAoX2EsIG1vZGVfMSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG1vZGVfMSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBtb2RlLCAkaW5wdXRFbGVtZW50LCAkaW5mbykge1xuICAgICAgICBjb25zdCBlbmhhbmNlZE5vZGVJZCA9ICRpbnB1dEVsZW1lbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHsganNvbiwgZGF0YSB9ID0geWllbGQgX2NhbGxDaGVja05vZGVJZCh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgZW5oYW5jZWROb2RlSWQpO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZztcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIiEhZmFpbHVyZSEhXCIgKyBlbmhhbmNlZE5vZGVJZCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vbHRpcCA9IG1ha2VUb29sdGlwKGpzb24pO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQuYXR0cihcInRpdGxlXCIsIHRvb2x0aXApO1xuICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZUlkID0gY2hvb3NlTm9kZUlkKGpzb24sIG1vZGUpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKHNlbGVjdGVkTm9kZUlkKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7ZW5oYW5jZWROb2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKGAke2pzb24uc3RhdHVzQ29kZX0gJHtkYXRhLnN0YXR1c1RleHR9YCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGlmICghcmVmZXJlbmNlIHx8ICFyZWZlcmVuY2Uubm9kZUlkKSB7XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhIGZhLWVycm9yXCIgc3R5bGU9XCJjb2xvcjpyZWQ7XCI+PC9pPm5vIHJlZmVyZW5jZSAhPHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgeyBpY29uLCBjb2xvciB9ID0gZ2V0SWNvbihyZWZlcmVuY2UpO1xuICAgICAgICBjb25zdCB0aXRsZSA9IGAoJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9KSAkeygoX2MgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm5hbWUpIHx8ICgoX2QgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50ZXh0KSB8fCBcIlwifWA7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpIGtleT1cIiR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfVwifT48c3BhbiBjbGFzcz1cInRyZWUtdGV4dFwiIHRpdGxlPSR7dGl0bGV9PjxpIGNsYXNzPVwiZmEgJHtpY29ufVwiIHN0eWxlPVwiY29sb3I6JHtjb2xvcn07XCI+PC9pPiAke3R9PC9zcGFuPjx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICRlbGVtZW50LmFkZENsYXNzKFwiZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInZhbHVlXCIsIG4pO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICB9O1xuICAgIGNvbnN0IGZpbmRFbGVtZW50ID0gKG5vZGVJZCwgJHRyZWUpID0+IHtcbiAgICAgICAgcmV0dXJuICR0cmVlLmZpbmQoYGxpW2tleT1cIiR7bm9kZUlkfVwiXWApO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0U2luZ2xlID0gKHRoYXQsICRsaSkgPT4ge1xuICAgICAgICB0aGF0LiR0cmVlLmZpbmQoXCJsaSA+IC50cmVlLXRleHRcIikucmVtb3ZlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgLy8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zXG4gICAgICAgICRsaS5maW5kKFwiLnRyZWUtdGV4dDpmaXJzdFwiKS5hZGRDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgIH07XG4gICAgY29uc3QgYXV0b0V4cGFuZCA9ICh0aGF0LCBicm93c2VQYXRoLCAkdHJlZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGV4cGFuZCB0aGUgdHJlZSB0byBzaG93IHRoZSBub2RlSWRcbiAgICAgICAgbGV0ICRjdXJyZW50ID0gJHRyZWUuY2hpbGRyZW4oXCI6Zmlyc3RcIik7XG4gICAgICAgIGJyb3dzZVBhdGgucmVsYXRpdmVQYXRoLmVsZW1lbnRzIHx8IFtdO1xuICAgICAgICBjb25zdCBub2RlSWRzID0gYnJvd3NlUGF0aC5ub2RlSWRzIHx8IFtdO1xuICAgICAgICBpZiAobm9kZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZUlkcykge1xuICAgICAgICAgICAgaWYgKCRjdXJyZW50Lmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZXhwYW5kIGFuZCBzZWxlY3QgdGhlIHJpZ2h0IGVsZW1lbnRcbiAgICAgICAgICAgICAgICB5aWVsZCBfZXhwYW5kTGkodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBmaW5kRWxlbWVudChuLCAkY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoJGVsZW1lbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGN1cnJlbnQgPSAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RTaW5nbGUodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICBzY3JvbGxUb0xpKHRoYXQuJGRyb3Bkb3duLCAkY3VycmVudCk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gc2Nyb2xsVG9MaSgkY29udGFpbmVyLCAkdGFyZ2V0TGkpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0IGl0ZW0gcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBsaVBvcyA9ICR0YXJnZXRMaS5wb3NpdGlvbigpLnRvcDtcbiAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclNjcm9sbFRvcCA9ICRjb250YWluZXIuc2Nyb2xsVG9wKCk7XG4gICAgICAgIGlmIChjb250YWluZXJTY3JvbGxUb3AgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiB0byBzY3JvbGwgdG8gKGN1cnJlbnQgc2Nyb2xsICsgaXRlbSdzIHBvc2l0aW9uKVxuICAgICAgICAvLyBBZGp1c3QgdGhpcyBjYWxjdWxhdGlvbiBiYXNlZCBvbiB5b3VyIG5lZWRzXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvID0gY29udGFpbmVyU2Nyb2xsVG9wICsgbGlQb3MgLSAkY29udGFpbmVyLmhlaWdodCgpIC8gMiArICR0YXJnZXRMaS5oZWlnaHQoKSAvIDI7XG4gICAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIGVuc3VyZSB0aGUgaXRlbSBpcyB2aXNpYmxlXG4gICAgICAgICRjb250YWluZXIuYW5pbWF0ZSh7XG4gICAgICAgICAgICBzY3JvbGxUb3A6IHNjcm9sbFRvLFxuICAgICAgICB9LCA1MDApOyAvLyBBZGp1c3QgdGhlIGR1cmF0aW9uICg1MDBtcykgYXMgbmVlZGVkXG4gICAgfVxuICAgIGNvbnN0IHJlYWNoU2VsZWN0aW9uID0gKHRoYXQsIHBhcmVudE5vZGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBub2RlSWQgPSB0aGF0LiRpbnB1dC52YWwoKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIHJvb3ROb2RlSWQ6IHBhcmVudE5vZGUubm9kZUlkLFxuICAgICAgICAgICAgaXNUeXBlOiB0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmIHx8IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgIGNvbnN0IGJyb3dzZVBhdGggPSB5aWVsZCB3YWxrQmFja3dhcmQoZGF0YSwgb3B0aW9ucyk7XG4gICAgICAgIGlmICghYnJvd3NlUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIGF1dG9FeHBhbmQodGhhdCwgYnJvd3NlUGF0aCwgdGhhdC4kdHJlZSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gc29ydCByZWZlcmVuY2UgICBieSBicm93c2VOYW1lXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlcy5zb3J0KChhLCBiKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiAoKChfYSA9IGEuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hbWUpIHx8IFwiXCIpLmxvY2FsZUNvbXBhcmUoKChfYiA9IGIuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IFwiXCIpOyB9KTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuZmlsdGVyICYmICF0aGF0Lm9wdGlvbnMuZmlsdGVyKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoYDxsaT5lcnJvciAke2Vyci5tZXNzYWdlfTwvbGk+YCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmZpbmQoXCIuc3Bpbm5lclwiKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICRub2RlLnJlbW92ZUNsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1ha2VDb25uZWN0aW9uKHRoYXQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9leHBhbmRMaSh0aGF0LCAkbGkpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgIGNvbnN0IGYgPSAhdGhhdC5vcHRpb25zLmlzVHlwZVJlZiA/IGZldGNoQ2hpbGRyZW4gOiBmZXRjaFN1YnR5cGVzO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB5aWVsZCBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbGksIGYsIGRhdGEpO1xuICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRQYXJlbnROb2RlID0ge1xuICAgICAgICBicm93c2VOYW1lOiB7IG5hbWVzcGFjZUluZGV4OiAwLCBuYW1lOiBcIk9iamVjdHNcIiB9LFxuICAgICAgICBub2RlQ2xhc3M6IFwiT2JqZWN0XCIsXG4gICAgICAgIG5vZGVJZDogXCJucz0wO2k9ODVcIixcbiAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgdHlwZURlZmluaXRpb246IEZvbGRlclR5cGUsXG4gICAgfTtcbiAgICBjb25zdCBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbIFRlbXBlcmF0dXJlICBdXG4gICAgICAgICAqICAgKCB0b29sdGlwIDogKC9PYmplY3RzL015U2Vuc29yKSAobnM9MTtzPVRlbXBlcmF0dXJlKSlcbiAgICAgICAgICogWyArIFtGb2xkZXJdIE9iamVjdHNdXG4gICAgICAgICAqIFsgICAgIFtPYmplY3RdIE15U2Vuc29yXVxuICAgICAgICAgKiBbICAgICAoICkgW1ZhcmlhYmxlXSBUZW1wZXJhdHVyZV1cbiAgICAgICAgICovXG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubm9kZUJyb3dzZXJcIiwge1xuICAgICAgICAgICAgLyogZGVmYXVsdCBvcHRpb25zICovXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiAoKSA9PiAoeyBlbmRwb2ludDogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0M1wiIH0pLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gZGVmYXVsdFBhcmVudE5vZGUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICAgICAgaXNUeXBlUmVmOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuX19wYXJlbnROb2RlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUuY2FsbCh0aGF0KSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IHlpZWxkIGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBkZXNjO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGF0Ll9fcGFyZW50Tm9kZSB8fCBkZWZhdWx0UGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyByZXNldCBwYXJlbnQgbm9kZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdGhhdDtcbiAgICAgICAgICAgICAgICAgICAgYS5fX3BhcmVudE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHlpZWxkIHRoaXMucmVzb2x2ZVBhcmVudE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LmN1cnJlbnRQYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmlmeShtb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCBtb2RlLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbykudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwiaW5wdXQtZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5yZW1vdmVDbGFzcyhcImlucHV0LWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2hpZGVNZW51KG1lbnUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtY2xvc2UtcHJvcGVydHktc2VsZWN0XCIpO1xuICAgICAgICAgICAgICAgIG1lbnUuaGlkZSgpO1xuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAobWVudS5vcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBtZW51LmZpbmQoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykucHJvcChcImNoZWNrZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC5wdXNoKCQodGhpcykuZGF0YShcInZhbHVlXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuY2FsbGJhY2soc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhhdC4kZWxlbWVudERpdi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgLy94eCB9IGVsc2UgaWYgKHRoaXMuJG9wdGlvblNlbGVjdFRyaWdnZXIuaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAvL3h4ICAgICB0aGF0LiRvcHRpb25TZWxlY3RUcmlnZ2VyLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlTWVudShtZW51T3B0aW9ucywgb3B0cywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVudSA9ICQoXCI8ZGl2PlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLXR5cGVkSW5wdXQtb3B0aW9ucyBzdGVyZml2ZS1vbmxpbmUtbWVudVwiKTtcbiAgICAgICAgICAgICAgICBtZW51Lm9wdHMgPSBvcHRzO1xuICAgICAgICAgICAgICAgIG1lbnUuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgICAgICAgICAgICBtZW51T3B0aW9ucy5mb3JFYWNoKChvcHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdCA9IHsgdmFsdWU6IG9wdCwgbGFiZWw6IG9wdCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcCA9ICQoJzxhIGhyZWY9XCIjXCI+PC9hPicpLmF0dHIoXCJ2YWx1ZVwiLCBvcHQudmFsdWUpLmFwcGVuZFRvKG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC50ZXh0KG9wdC5sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AucHJvcChcInRpdGxlXCIsIG9wdC50aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0Lmljb24uaW5kZXhPZihcIjxcIikgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG9wdC5pY29uKS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0Lmljb24uaW5kZXhPZihcIi9cIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIjxpPlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBcInJlZC11aS10eXBlZElucHV0LWljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IFwibWFzay1pbWFnZTogdXJsKFwiICsgb3B0Lmljb24gKyBcIik7IC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiICsgb3B0Lmljb24gKyBcIik7XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCI8aT5cIiwgeyBjbGFzczogXCJyZWQtdWktdHlwZWRJbnB1dC1pY29uIFwiICsgb3B0Lmljb24gfSkucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLmNzcyh7IHBhZGRpbmdMZWZ0OiBcIjE4cHhcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdC5pY29uICYmICFvcHQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnRleHQob3B0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgY2I7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYiA9ICQoJzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoXCJwb2ludGVyLWV2ZW50c1wiLCBcIm5vbmVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YShcInZhbHVlXCIsIG9wdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlcGVuZFRvKG9wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcIm1vdXNlZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3B0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiLnByb3AoXCJjaGVja2VkXCIsICFjYi5wcm9wKFwiY2hlY2tlZFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5vbihcImtleWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERPV05cbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2hpbGRyZW4oXCI6Zm9jdXNcIikubmV4dCgpLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldnQua2V5Q29kZSA9PT0gMzgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVVBcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2hpbGRyZW4oXCI6Zm9jdXNcIikucHJldigpLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldnQua2V5Q29kZSA9PT0gMjcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTQ0FQRVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzYXJtQ2xpY2s6IGZhbHNlLFxuICAgICAgICAgICAgX3Nob3dNZW51KG1lbnUsIHJlbGF0aXZlVG8pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXNhcm1DbGljaykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FybUNsaWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBwb3MgPSByZWxhdGl2ZVRvLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSByZWxhdGl2ZVRvLmhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHZhciBtZW51SGVpZ2h0ID0gbWVudS5oZWlnaHQoKTtcbiAgICAgICAgICAgICAgICB2YXIgdG9wID0gaGVpZ2h0ICsgcG9zLnRvcDtcbiAgICAgICAgICAgICAgICBpZiAodG9wICsgbWVudUhlaWdodCAtICQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpID4gJCh3aW5kb3cpLmhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcCAtPSB0b3AgKyBtZW51SGVpZ2h0IC0gJCh3aW5kb3cpLmhlaWdodCgpICsgNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRvcCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5oZWlnaHQobWVudUhlaWdodCArIHRvcCk7XG4gICAgICAgICAgICAgICAgICAgIHRvcCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1lbnUuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiB0b3AgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IHBvcy5sZWZ0ICsgXCJweFwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUuc2xpZGVEb3duKDEwMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsYXkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1jbG9zZS1wcm9wZXJ0eS1zZWxlY3RcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KG1lbnUpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHJlbGF0aXZlVG8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuZGlzYXJtQ2xpY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9zaG93VHlwZU1lbnUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd01lbnUodGhhdC4kbWVudSwgdGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdGhhdC5zZWxlY3RlZE1lbnVJdGVtO1xuICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9IHRoYXQuJG1lbnUuZmluZChcIlt2YWx1ZT0nXCIgKyB0eXBlICsgXCInXCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfSwgMTIwKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfaW5pdE1lbnUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5hdHRyKFwidGFiaW5kZXhcIiwgLTEpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIub24oXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtZm9jdXMtYmxvY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodGhhdC4kbWVudSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRtZW51LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBmYS1pZC1jYXJkXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZUxpc3QgPSBbXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwidGV4dFwiLCB2YWx1ZTogXCJ0XCIsIHRpdGxlOiBcIlZhbHVlIGlzIG5vdCB2ZXJpZmllZFwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1mb250XCIvaT4gJyB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJtc2cuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJtc2dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIm5vZGUgaWQgb3IgIGJyb3dzZSBwYXRoIGNvbWVzIGZyb20gaW5qZWN0ZWQgbXNnIHBhcmFtZXRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUtb3Blbi1vXCIvPicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiTm9kZUlkXCIsIHZhbHVlOiBcIm5cIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtdGFnXCIvPjEgJm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJBbGlhc2VkIE5vZGVJZFwiLCB2YWx1ZTogXCJuYVwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1ib29rbWFya1wiLz4mbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIk5vZGVJZCB3aXRoIG5hbWVzcGFjZSBVcm5cIiwgdmFsdWU6IFwibnN1XCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWlkLWNhcmRcIi8+Jm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJCcm93c2VQYXRoXCIsIHZhbHVlOiBcImJcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtdGFnXCIvPjxpIGNsYXNzPVwiZmEgZmEtZmlnaHRlci1qZXRcIi8+Jm5ic3A7JyB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJBbGlhc2VkIEJyb3dzZSBQYXRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJhYlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtYm9va21hcmtcIi8+PGkgY2xhc3M9XCJmYSBmYS1maWdodGVyLWpldFwiLz4mbmJzcDsnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGZpZ3VyZU91dE1lblVJdGVtVmFsdWUodGhhdC4kaW5wdXQudmFsKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0eXBlTGlzdC5maW5kKCh4KSA9PiB4LnZhbHVlID09PSBhKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbC5lbXB0eSgpLmFwcGVuZChgPHNwYW4gdGl0bGU9JHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnRpdGxlKSB8fCBcIlwifT4mbmJzcDsgJHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLmljb24pIHx8IFwiXCJ9PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IGE7XG4gICAgICAgICAgICAgICAgY29uc3QgdHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUgPSB0aGlzLl9jcmVhdGVNZW51KHR5cGVMaXN0LCB7fSwgKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IHRvTW9kZSh2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIE1lbnUgc2VsZWN0ZWQgIVxuICAgICAgICAgICAgICAgICAgICAgICAgdHQudmVyaWZ5KG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0eXBlTGlzdC5maW5kKCh4KSA9PiB4LnZhbHVlID09PSB2KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5zZWxlY3RlZE1lbnVJdGVtID0gdjtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0TGFiZWwuZW1wdHkoKS5hcHBlbmQoYDxzcGFuIHRpdGxlPSR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS50aXRsZSkgfHwgXCJcIn0+Jm5ic3A7ICR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5pY29uKSB8fCBcIlwifTwvc3Bhbj5gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51LmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIuc2hvdygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vZGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTW9kZSh0aGF0LnNlbGVjdGVkTWVudUl0ZW0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldE1vZGUobW9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBmcm9tTW9kZShtb2RlKTtcbiAgICAgICAgICAgICAgICB0aGF0LnNlbGVjdGVkTWVudUl0ZW0gPSBzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuY3NzKFwiYm9yZGVyXCIsIFwibm9uZVwiKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnREaXYgPSB0aGF0LiRpbnB1dC53cmFwKFwiPGRpdj5cIikucGFyZW50KCkuYWRkQ2xhc3MoXCJtYWluLXdyYXBwZXJcIik7XG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBDb21ibyBicm93c2VyXG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8gPSAkKFwiPGRpdi8+XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwic3RlcmZpdmUtY29tYm8tYm94XCIpO1xuICAgICAgICAgICAgICAgIC8vIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtaW5wdXQtd3JhcFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIGFkZCBidXR0b24gb24gdGhlIHJpZ2h0IHNpZGVcbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHRvZ2dsZVRyZWVCdG5cbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuID0gJChgPGJ1dHRvbiB0aXRsZT1cIm9wZW4gT1BDVUEgQWRkcmVzc1NwYWNlIEJyb3dzZXJcIj48aSBjbGFzcz1cImZhIGZhLXNpdGVtYXBcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYWZ0ZXIodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGRyb3Bkb3duLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmVlIHdpZGdldCBpcyBnb2luZyB0byBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSB5aWVsZCB0aGF0LnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT09IHRoYXQuY3VycmVudFBhcmVudCB8fCAoKF9hID0gdGhhdC5jdXJyZW50UGFyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZUlkKSAhPT0gcGFyZW50Tm9kZS5ub2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhhdC5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb1JlYWNoU2VsZWN0aW9uICYmICh5aWVsZCByZWFjaFNlbGVjdGlvbih0aGF0LCBwYXJlbnROb2RlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHZlcmlmeUJ0blxuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24gdGl0bGU9XCJ2ZXJpZnkgbm9kZUlkIG9yIGJyb3dzZVBhdGhcIj48aSBjbGFzcz1cImZhIGZhLXJlZnJlc2hcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYWZ0ZXIodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSB0aGF0Lm1vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkobW9kZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVJbnB1dCA9IChpbnB1dCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGUgPSB0aGF0Lm1vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uRGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEsIGpzb24gfSA9IHlpZWxkIF9jYWxsQ2hlY2tOb2RlSWQoY29ubmVjdGlvbkRhdGEsIGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZUlkID0gY2hvb3NlTm9kZUlkKGpzb24sIG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudmFsKHNlbGVjdGVkTm9kZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIHByZXBlbmRlZCBidXR0b25cbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0ID0gJChcIjxkaXY+XCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5iZWZvcmUodGhhdC4kdWlTZWxlY3QpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyID0gJCgnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCI+PC9idXR0b24+JykucHJlcGVuZFRvKHRoYXQuJHVpU2VsZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgJCgnPGkgY2xhc3M9XCJyZWQtdWktdHlwZWRJbnB1dC1pY29uIGZhIGZhLWNhcmV0LWRvd25cIj48L2k+JykudG9nZ2xlKHRydWUpLmFwcGVuZFRvKHRoYXQuJHNlbGVjdFRyaWdnZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zaG93VHlwZU1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImtleWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvd25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zaG93VHlwZU1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImZvY3VzXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0LmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAub24oXCJibHVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhciBvcHQgPSB0aGF0LnR5cGVNYXBbdGhhdC5wcm9wZXJ0eVR5cGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKG9wdC5oYXNWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0LnJlbW92ZUNsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbCA9ICQoJzxzcGFuIGNsYXNzPVwicmVkLXVpLXR5cGVkSW5wdXQtdHlwZS1sYWJlbFwiPjwvc3Bhbj4nKS5hcHBlbmRUbyh0aGF0LiRzZWxlY3RUcmlnZ2VyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdE1lbnUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIiwgXCJlbnRlciBhIG5vZGVJZCBvciBhIGJyb3dzZVBhdGggXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIHRlbXBvcmF0eSBpbmZvIHBhbmVsXG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mbyA9ICQoYDxkaXYgY2xhc3M9XCJpbmZvLXRleHRcIj48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gZHJvcCBkb3duIHRyZWVcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS1kcm9wZG93blwiKS5oaWRlKCkuYXBwZW5kVG8odGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUgPSAkKGA8dWwgY2xhc3M9XCJzdGVyZml2ZS10cmVlXCI+PC91bD5gKS5hcHBlbmRUbyh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgLy8gdGhhdC4kZHJvcGRvd24uc2hvdygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgY29uc3QgaXNPbkxlZnRTaXplID0gKCRsaSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkbGkub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVFeHBhbnNpb24gPSAoJGxpKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfZXhwYW5kTGkodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImRibGNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgaW5wdXQgPSBgWyR7ZGlzcGxheU5hbWV9XSgke3ZhbHVlfSlgO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGUgPSB0aGF0Lm1vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSBcIm5vZGVJZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuc2V0TW9kZShtb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUlucHV0KHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnZhbChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHJldHVybnMgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgY29udGFpbmluZzpcbiAgICAgKiAgLSB0aGUgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksXG4gICAgICogIC0gdXNlcklkZW50aXR5VHlwZSxcbiAgICAgKiAgLSBjcmVkZW50aWFsc1xuICAgICAqICAtIG5hbWVzcGFjZUFsaWFzZXNcbiAgICAgKlxuICAgICAqIGV4dHJhY3RlZCBmcm9tIHRoZSB1aSB3aWRnZXQgI25vZGUtaW5wdXQtZW5kcG9pbnRcbiAgICAgKi9cbiAgICBjb25zdCBnZXRFbmRQb2ludEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgcmVkTm9kZSA9IFJFRC5ub2Rlcy5ub2RlKGVuZHBvaW50SWQpO1xuICAgICAgICBpZiAoIXJlZE5vZGUpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvLyBjb25zdCBjcmVkZW50aWFscyA9IFJFRC4oZW5kcG9pbnRJZCk7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gc2FuaXRpemUgYW5kIGV4dHJhY3QgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgb25seSAoIG5vdCB0aGUgbm9kZS1yZWQgc3R1ZmYpXG4gICAgICAgIGNvbnN0IHsgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksIHVzZXJJZGVudGl0eVR5cGUsIGNyZWRlbnRpYWxzLCBuYW1lc3BhY2VBbGlhc2VzIH0gPSByZWROb2RlO1xuICAgICAgICBjb25zdCByZXRWYWx1ZSA9IHtcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgc2VjdXJpdHlNb2RlLFxuICAgICAgICAgICAgc2VjdXJpdHlQb2xpY3ksXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgICAgICBuYW1lc3BhY2VBbGlhc2VzLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0VmFsdWU7XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnROciA9IGdldEVuZFBvaW50QXR0cmlidXRlcygpO1xuICAgICAgICBpZiAoIWVuZHBvaW50TnIpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZXNwYWNlQWxpYXNlcyA9IGVuZHBvaW50TnIubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oeyBuYW1lc3BhY2VBbGlhc2VzLCBpZDogZW5kcG9pbnRJZCB9LCBlbmRwb2ludE5yKTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IGdldEVuZHBvaW50UGFyYW1ldGVycyxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUNsaWVudDItRXh0ZW5zaW9uT2JqZWN0XCIsIHtcbiAgICAgICAgY2F0ZWdvcnk6IFwib3BjdWFcIixcbiAgICAgICAgY29sb3I6IFwiI0MwREVFRFwiLFxuICAgICAgICBhbGlnbjogXCJyaWdodFwiLFxuICAgICAgICBpY29uOiBcIi4uLy4uL2ljb25zL29wY3Vhbm9kZUxvZ28ucG5nXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJleHRlbnNpb24gb2JqZWN0XCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIGRhdGFUeXBlOiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBpbnB1dHM6IDEsXG4gICAgICAgIG91dHB1dHM6IDEsXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBIENsaWVudCBFeHRlbnNpb24gT2JqZWN0XCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IDE7XG4gICAgICAgICAgICBjb25zdCAkZGF0YVR5cGUgPSAkKFwiI25vZGUtaW5wdXQtZGF0YVR5cGVcIik7XG4gICAgICAgICAgICBjb25zdCByZWZlcmVuY2VzTm9kZURlc2MgPSB7XG4gICAgICAgICAgICAgICAgbm9kZUlkOiBcImk9MjJcIixcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJTdHJ1Y3R1cmVcIiB9LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiU3RydWN0dXJlXCIgfSxcbiAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiRGF0YVR5cGVcIixcbiAgICAgICAgICAgICAgICB0eXBlRGVmaW5pdGlvbjogXCJpPTBcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAkZGF0YVR5cGUubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IHBhcmVudE5vZGU6ICgpID0+IHJlZmVyZW5jZXNOb2RlRGVzYywgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgICAgICAgICB9LCBpc1R5cGVSZWY6IHRydWUgfSkpO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkgeyB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
9
9
|
</script>
|
10
10
|
<script type="text/x-red" data-template-name="OpcUa-Client2-ExtensionObject">
|
11
11
|
<h3>OpcUa ExtensionObject</h3>
|